自拍偷在线精品自拍偷|国产无码一区二区久久|最新版天堂资源中文官网|国产精品第一页爽爽影院|国产精品一区二区av不卡|久久久波多野av一区无码|国产欧美日本亚洲精品一4区|亚洲精品天堂在线观看2020

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

selenium爬取網(wǎng)頁(selenium爬取網(wǎng)頁數(shù)據(jù))

軟件開放2年前 (2023-02-21)995

本篇文章給大家談?wù)剆elenium爬取網(wǎng)頁,以及selenium爬取網(wǎng)頁數(shù)據(jù)對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

python下 selenium與chrome結(jié)合進(jìn)行網(wǎng)頁爬取,怎么設(shè)置代理IP

#coding:utf-8

import sys,re,random,time,os

import socket

from socket import error as socket_error

import threading

import urllib2,cookielib

from bs4 import BeautifulSoup

from selenium import webdriver

from selenium.webdriver.common.proxy import *

from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

proxyFilePath = time.strftime("%Y%m%d")

def testSocket(ip, port):

'''

socket連接測試,用來檢測proxy ip,port 是否可以正常連接

'''

print '正在測試socket連接...'

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:

sock.settimeout(10)

sock.connect((ip, int(port)))

#sock.send('meta')

sock.close()

print ip+':'+port+'--status:ok'

return 1

except socket_error as serr: # connection error

sock.close()

print ip+':'+port+'--status:error--Connection refused.'

return 0

def getDriver(httpProxy = '', type='Firefox'):

if type == 'Firefox':

proxy = Proxy({

'proxyType': ProxyType.MANUAL,

'httpProxy': httpProxy,

'ftpProxy': httpProxy,

'sslProxy': httpProxy,

'noProxy': '' # set this value as desired

})

firefox_profile = FirefoxProfile()

#firefox_profile.add_extension("firefox_extensions/adblock_plus-2.5.1-sm+tb+an+fx.xpi")

firefox_profile.add_extension("firefox_extensions/webdriver_element_locator-1.rev312-fx.xpi")

firefox_profile.set_preference("browser.download.folderList",2)

firefox_profile.set_preference("webdriver.load.strategy", "unstable")

#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary('/usr/bin/firefox'))

#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary("/cygdrive/c/Program\ Files\ (x86)/Mozilla\ Firefox/firefox.exe"))

driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy)

elif type == 'PhantomJS': # PhantomJS

service_args = [

'--proxy='+httpProxy,

'--proxy-type=http',

]

webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'

webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Windows x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36'

driver = webdriver.PhantomJS(executable_path='windows/phantomjs.exe', service_args=service_args)

else: # Chrome

chrome_options = webdriver.ChromeOptions()

#chrome_options.add_extension('firefox_extensions/adblockplus_1_7_4.crx')

chrome_options.add_argument('--proxy-server=%s' % httpProxy)

driver = webdriver.Chrome(executable_path='windows/chromedriver.exe', chrome_options=chrome_options)

return driver

從零開始學(xué)Python-使用Selenium抓取動態(tài)網(wǎng)頁數(shù)據(jù)

AJAX(Asynchronouse JavaScript And XML:異步JavaScript和XML)通過在后臺與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,Ajax 可以使網(wǎng)頁實現(xiàn)異步更新,這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行局部更新。傳統(tǒng)的網(wǎng)頁(不使用Ajax)如果需要更新內(nèi)容,必須重載整個網(wǎng)頁頁面。

因為傳統(tǒng)的網(wǎng)頁在傳輸數(shù)據(jù)格式方面,使用的是 XML 語法,因此叫做 AJAX ,其實現(xiàn)在數(shù)據(jù)交互基本上都是使用 JSON 。使用AJAX加載的數(shù)據(jù),即使使用了JS將數(shù)據(jù)渲染到了瀏覽器中,在 右鍵-查看網(wǎng)頁源代碼 還是不能看到通過ajax加載的數(shù)據(jù),只能看到使用這個url加載的html代碼。

法1:直接分析ajax調(diào)用的接口。然后通過代碼請求這個接口。

法2:使用Selenium+chromedriver模擬瀏覽器行為獲取數(shù)據(jù)。

Selenium 相當(dāng)于是一個機(jī)器人??梢阅M人類在瀏覽器上的一些行為,自動處理瀏覽器上的一些行為,比如點擊,填充數(shù)據(jù),刪除cookie等。 chromedriver 是一個驅(qū)動 Chrome 瀏覽器的驅(qū)動程序,使用他才可以驅(qū)動瀏覽器。當(dāng)然針對不同的瀏覽器有不同的driver。以下列出了不同瀏覽器及其對應(yīng)的driver:

現(xiàn)在以一個簡單的獲取百度首頁的例子來講下 Selenium 和 chromedriver 如何快速入門:

參考:Selenium的使用

直接直接分析ajax調(diào)用的接口爬取

selenium結(jié)合lxml爬取

selenium通過人機(jī)驗證爬蟲

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

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

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

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

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

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

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

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

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

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

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

但有的時候,網(wǎng)站會使用更為復(fù)雜的人機(jī)驗證。比如這樣的:

二.動態(tài)網(wǎng)頁抓取

因此,我們?nèi)绻褂?AJAX 加載的動態(tài)網(wǎng)頁,怎么爬取里面動態(tài)加載的內(nèi)容呢?有兩種方法:

方法1操作步驟:

步驟:

selenium選擇元素的方法有很多:

有時候,我們需要查找多個元素。在上述例子中,我們就查找了所有的評論。因此,也有對應(yīng)的元素選擇方法,就是在上述的element后加上s,變成elements。

其中xpath和css_selector是比較好的方法,一方面比較清晰,另一方面相對其他方法定位元素比較準(zhǔn)確。

除此之外,我們還可以使用selenium操作元素方法實現(xiàn)自動操作網(wǎng)頁。常見的操作元素方法如下:

– clear 清除元素的內(nèi)容

– send_keys 模擬按鍵輸入

– click 點擊元素

– submit 提交表單

由于篇幅有限,有興趣的讀者,可以到selenium的官方文檔查看:

python網(wǎng)絡(luò)爬蟲:Selenium

獲取頁面每個Cookies值,用法如下

driver.add_cookie(cookie_dict)

一個瀏覽器肯定會有很多窗口,所以我們肯定要有方法來實現(xiàn)窗口的切換。切換窗口的方法如下:

imgs = driver.find_elements_by_xpath("http://img")

for img in imgs:

driver.execute_script('$(arguments[0]).fadeOut()',img)

driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')

driver.execute_script('alert("This is a alert")')

driver.quit()

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

知識點:

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

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

你要先導(dǎo)入:

然后再:

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

代碼實現(xiàn),如下,獲取騰訊新聞首頁的新聞標(biāo)簽的內(nèi)容。

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

參考代碼示例:

知識點:掌握 selenium控制標(biāo)簽頁的切換

知識點:掌握 selenium控制frame標(biāo)簽的切換

知識點:掌握 利用selenium獲取cookie的方法

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

知識點:掌握 手動實現(xiàn)頁面等待

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

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

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

關(guān)于selenium爬取網(wǎng)頁和selenium爬取網(wǎng)頁數(shù)據(jù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://www.thonggone.com/post/9282.html

“selenium爬取網(wǎng)頁(selenium爬取網(wǎng)頁數(shù)據(jù))” 的相關(guān)文章

云南軟件開發(fā)(云南軟件開發(fā)培訓(xùn)學(xué)校)

云南軟件開發(fā)(云南軟件開發(fā)培訓(xùn)學(xué)校)

今天給各位分享云南軟件開發(fā)的知識,其中也會對云南軟件開發(fā)培訓(xùn)學(xué)校進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、昆明專業(yè)app開發(fā)公司 2、云南附近的軟件開發(fā)培訓(xùn)哪家比較好? 3、云南專門做軟件開發(fā)的公司有哪些好的? 4、云南軟件開發(fā)公司排名哪些...

關(guān)于qcon全球軟件開發(fā)大會的信息

關(guān)于qcon全球軟件開發(fā)大會的信息

今天給各位分享qcon全球軟件開發(fā)大會的知識,其中也會對進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、除了csdn,msdn,博客園,iteye還有哪些論壇比較好的? 2、BASIC College,或許就是每個技術(shù)人的“伊甸園” 3、互聯(lián)網(wǎng)圈子的...

怎么創(chuàng)建網(wǎng)站(怎么建網(wǎng)站)

怎么創(chuàng)建網(wǎng)站(怎么建網(wǎng)站)

本篇文章給大家談?wù)勗趺磩?chuàng)建網(wǎng)站,以及怎么建網(wǎng)站對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、如何創(chuàng)建自己的網(wǎng)站平臺 2、怎樣自己創(chuàng)建一個網(wǎng)站? 3、怎么創(chuàng)建網(wǎng)站 4、怎么建網(wǎng)站呀! 5、怎么創(chuàng)建一個自己的網(wǎng)站 如何創(chuàng)建自己的網(wǎng)站平臺 創(chuàng)建自己的網(wǎng)站平臺...

手機(jī)怎么用電腦端瀏覽器(如何手機(jī)使用電腦瀏覽器)

手機(jī)怎么用電腦端瀏覽器(如何手機(jī)使用電腦瀏覽器)

今天給各位分享手機(jī)怎么用電腦端瀏覽器的知識,其中也會對如何手機(jī)使用電腦瀏覽器進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、安卓手機(jī)瀏覽器怎么設(shè)置成電腦版 2、手機(jī)瀏覽器怎么切換電腦版 3、手機(jī)怎么進(jìn)去電腦版網(wǎng)頁 安卓手機(jī)瀏覽器怎么設(shè)置成電腦版 安...

linux怎么查看home(Linux怎么查看日志)

linux怎么查看home(Linux怎么查看日志)

本篇文章給大家談?wù)刲inux怎么查看home,以及Linux怎么查看日志對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、linux中怎么查看所有數(shù)據(jù)表 2、Linux9中如何查看home目錄中的隱藏文件? 3、linux系統(tǒng)如何區(qū)分HOME目錄和/HOME目錄?...

小米手機(jī)工程模式代碼大全(小米手機(jī)工程模式代碼大全)

小米手機(jī)工程模式代碼大全(小米手機(jī)工程模式代碼大全)

今天給各位分享小米手機(jī)工程模式代碼大全的知識,其中也會對小米手機(jī)工程模式代碼大全進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、小米手機(jī)如何查看電池?fù)p耗代碼? 2、怎么進(jìn)入紅米3MTK的工程模式的代碼 3、小米手機(jī)一直工程模式 小米手機(jī)如何查看電池...