您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

07 買粉絲買粉絲爬蟲 selenium(從零開始學python爬蟲(八):selenium提取數據和其他使用方法)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-11 16:01:29【】6人已围观

简介不同的選項卡是存在列表里browser.window_handles通過browser.window_handles[0]就可以操作第一個選項卡importtimefromseleniumimport

不同的選項卡是存在列表里browser.window_handles

通過browser.window_handles[0]就可以操作第一個選項卡

import timefrom selenium import webdriver

browser = webdriver.Chrome()

browser.get('.買粉絲')

browser.execute_script('window.open()')print(browser.window_handles)

browser.switch_to_window(browser.window_handles[1])

browser.get('bao.買粉絲')

time.sleep(1)

browser.switch_to_window(browser.window_handles[0])

browser.get('hon.org')

異常處理

這里只進行簡單的演示,查找一個不存在的元素

from selenium import webdriverfrom selenium.買粉絲mon.exceptions import TimeoutException, NoSuchElementException

browser = webdriver.Chrome()try:

browser.get('.買粉絲')except TimeoutException:    print('Time Out')try:

browser.find_element_by_id('hello')except NoSuchElementException:    print('No Element')finally:

browser.close()

所有的努力都值得期許,每一份夢想都應該灌溉!

從零開始學python爬蟲(八):selenium提取數據和其他使用方法

知識點:

知識點:了解 driver對象的常用屬性和方法

注意:最新版本的selenium已經取消了這種格式,取而代之的是:

你要先導入:

然后再:

知識點:掌握 driver對象定位標簽元素獲取標簽對象的方法

代碼實現,如下,獲取騰訊新聞首頁的新聞標簽的內容。

知識點:掌握 元素對象的操作方法

參考代碼示例:

知識點:掌握 selenium控制標簽頁的切換

知識點:掌握 selenium控制frame標簽的切換

知識點:掌握 利用selenium獲取買粉絲okie的方法

知識點:掌握 selenium控制瀏覽器執行js代碼的方法

知識點:掌握 手動實現頁面等待

知識點:掌握 selenium開啟無界面模式

知識點:了解 selenium使用代理ip

知識點:了解 selenium替換user-agent

解決selenium驅動被識別反爬,讓爬蟲順利跑起來

查閱了很多資料,都是說Chromedriver 源碼中某個變量名是表示該驅動特征的,只需要改變這個變量名,或者攔截包含該變量名的請求就行了,攔截需要中間件。太繁瑣,還是改源碼簡單點,

于是找到了,別人改好,編譯好的Chromedriver,特征已經被抹除

目前只有windows10版本和linux16.04版本

gitee地址:

買粉絲s://gitee.買粉絲/bobozhangyx/java-crawler/tree/master/file/%E7%BC%96%E8%AF%91%E5%90%8E%E7%9A%84chromedriver

selenium通過人機驗證爬蟲

之前在學校曾經用過request+xpath的方法做過一些爬蟲腳本來玩,從ios正式轉前端之后,出于興趣,我對爬蟲和反爬蟲又做了一些了解,然后發現了selenium這個神器。selenium原本是一款測試工具,但由于他可以較好的模擬瀏覽器的各種操作,完全無視對于user-agent的限制,所以現在被更多的用于爬蟲腳本中。這里記錄一下借助selenium庫進行爬蟲時碰到的一些問題以及解決方法。(拒絕惡意爬蟲從我做起)

selenium的安裝不多說, pip install selenium就行。不過要注意自己的python版本,要是3.x才行。用它打開瀏覽器,然后通過dom操作獲取需要的dom節點。

如果需要登錄的,也可以事先將賬號密碼寫好,然后用send_keys方法進行自動輸入。

然后需要什么就直接通過dom方法來獲取。不過現在很多網站的url有防爬處理,使用了不規律的url,無法像豆瓣排行榜那樣直接遍歷。但這個不難,用selenium就是要模擬人的操作的,真人操作的時候也不會直接輸url來一頁一頁看,比如在線閱讀的網站,一般都會有個目錄頁。先爬取目錄頁面的信息,先將正文url列表保存下來,然后再遍歷列表就行。

這里有個sleep,目的是是確保目錄頁能完全加載完。當然這個方法有點蠢,后面我使用了不同的方法來做頁面加載完成的判斷。

頁面加載完成需要時間,一定要等頁面加載好了才能獲取頁面元素。而直接設置一個固定的sleep顯然是效率極低且容易出錯的。這里有幾種不同的方法來自動判斷頁面加載的情況。

監視我最終需要的元素有沒有加載完成,加載完成了就開始后續操作。比如我要的dom節點有一個類名為'page-買粉絲ntent',并且在整個頁面中一共有兩處,而我需要的是第二處。那就可以監視這個節點的加載情況。

這里設置了0.5秒的刷新周期,當然可以設置的更短,然后設置了10秒的timeout,超時自動打開下一章。

這就很簡單了,就一句話,最多等10秒,進行下一步。要是提前加載完就提前進行。這個方便是方便,但是不好用,他會等頁面完全加載完才進行下一步,而事實上我只需要等正文加載完就行,所以效率上要差一點。

顯性等待的好處就是可以在我需要的元素加載完的時候就進入下一步,獲取元素內容,但是也有不好的地方,那就是還不夠靈活。顯性等待在超時的時候會拋出TimeoutException異常,在暴露的接口中沒有給我定義異常處理的地方,這也是我選擇自己實現一遍等待機制的原因,這樣我可以對超時的異常進行處理。

很多時候,我們會發現,在登錄賬號時,系統會要我們輸入驗證碼。如果想要讓腳本自動識別驗證碼,可能就涉及到圖像識別技術,還有一些第三方的服務可以使用,也是可行的。

但有的時候,網站會使用更為復雜的人機驗證。比如這樣的:

很赞哦!(8832)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:江苏盐城盐都区

工作室:小组

Email:[email protected]