知識ポイントの補足3(セレン)

序文

セレンの重要性は自明です。動的なウェブページに直面して、通常のクローラーは使いやすくなく、インターフェースは運が良ければ見つけることができます。最も実用性が高いのはセレンだけです。

セレンの重要な知識ポイント

自動ログインを実現するためのCookieの取得と使用

簡単な例として、コードをスキャンしてDoubanにログインし、Cookieを保存します

browser.get('https://accounts.douban.com/passport/login?source=movie')
time.sleep(15)
# # 获取cookie并通过json模块将dict转化成str
# dictCookies = browser.get_cookies()
# jsonCookies = json.dumps(dictCookies)
# # 登录完成后,将cookie保存到本地文件
# with open('cookies.json', 'w') as f:
#     f.write(jsonCookies)
#  初次建立连接,随后方可修改cookie
browser.get('https://accounts.douban.com/passport/login?source=movie')
# 删除第一次建立连接时的cookie
browser.delete_all_cookies()
# 读取登录时存储到本地的cookie
with open('cookies.json', 'r', encoding='utf-8') as f:
    listCookies = json.loads(f.read())
for cookie in listCookies:
    browser.add_cookie({
        'domain': '.accounts.douban.com',  # 此处xxx.com前,需要带点
        'name': cookie['name'],
        'value': cookie['value'],
        'path': '/',
        'expires': None
    })
# 再次访问页面,便可实现免登陆访问
browser.get('https://movie.douban.com/')

多くのWebページは、それらにアクセスするためにCookieを運ぶためにセレンを必要とし、異なるWebページ上のCookieの適時性も異なります。この例は最も一般的で実用的です。
拡張機能と拡張機能
自動ログインを使用して、自動チケット取得などソフトウェアの初期開発を実現します。
リクエストとCookieについて

セレン元素の位置決め

練習後は、
絶対パス
が最も速くて便利です。チェックでコピーfullxpathを右クリックすると、通常は見つけることができます。見つからない場合は、ネストされたWebページまたはその他の難しいポイントである可能性があります。要素属性を
使用して、より多くの配置方法、より少ない練習、より信頼性の低いエクスペリエンス


スクロール・バー

time.sleep(2)
driver.execute_script('window.scrollTo(0,400)')

スクロールバーを操作するその他の方法

電話を偽装する

* Baiduライブラリに対処するため
*

url = "https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html"
options = webdriver.ChromeOptions()
# 伪装成iPhone
options.add_argument('--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)

次のクローラーに進むために、モバイル端末を偽装します。そうしないと、ターゲットURLを入力すると、最初にライブラリのホームページにジャンプし、次にポジショニングの操作がより困難になります。

一般的に報告されるエラー

NoSuchElementException: Message: Unable to locate element:

ポジショニングが失敗するか、ページが完全に読み込まれていません

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted:

目的の要素が予期せずページに表示されます。スクロールバーを操作するだけです。

典型的な例の要約

  1. Douban
  2. Baiduライブラリ
  3. Baiduの写真
  4. http://www.impawards.com/(失敗)
  5. 中国鉄道ネットワーク
  6. ほとんど知っている

おすすめ

転載: blog.csdn.net/qq_51598376/article/details/113788403