欧美亚洲综合图区在线|天天射天天干国产成卜|99久久免费国产精精品|国产的欧美一区二区三区|日韩中文字幕无码不卡专区|亚麻成人aV极品一区二区|国产成人AV区一区二区三|成人免费一区二区三区视频网站

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

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

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

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

本文目錄一覽:

python下 selenium與chrome結(jié)合進行網(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ù)器進行少量數(shù)據(jù)交換,Ajax 可以使網(wǎng)頁實現(xiàn)異步更新,這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行局部更新。傳統(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)于是一個機器人??梢阅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通過人機驗證爬蟲

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

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

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

然后需要什么就直接通過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秒,進行下一步。要是提前加載完就提前進行。這個方便是方便,但是不好用,他會等頁面完全加載完才進行下一步,而事實上我只需要等正文加載完就行,所以效率上要差一點。

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

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

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

二.動態(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)注本站。

掃描二維碼推送至手機訪問。

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

本文鏈接:http://m.landcheck.net/post/9282.html

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

軟件開發(fā)測試(測試開發(fā)工程師)

軟件開發(fā)測試(測試開發(fā)工程師)

本篇文章給大家談?wù)勡浖_發(fā)測試,以及測試開發(fā)工程師對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、it行業(yè)軟件測試,軟件開發(fā)哪個難? 2、軟件測試和軟件開發(fā),哪個工作有發(fā)展? 3、什么是軟件測試,主要測試哪些內(nèi)容? 4、軟件開發(fā)和軟件測試哪個更有前途? it...

gm仙俠手游破解版(gm游戲盒子破解版)

gm仙俠手游破解版(gm游戲盒子破解版)

今天給各位分享gm仙俠手游破解版的知識,其中也會對gm游戲盒子破解版進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、永恒仙域(GM破解刷充)兌換碼哪里免費領(lǐng)取? 2、永恒仙域(GM破解刷充)新服開區(qū)攻略 3、赤壁之戰(zhàn)(GM破解充值)激活碼有哪些?...

怎么創(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)站平臺...

什么記賬軟件好用簡單(什么記賬軟件好用簡單手機)

什么記賬軟件好用簡單(什么記賬軟件好用簡單手機)

今天給各位分享什么記賬軟件好用簡單的知識,其中也會對什么記賬軟件好用簡單手機進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、手機記賬軟件哪個好? 2、有哪些好用的記賬app? 3、好用的記賬軟件有哪些? 手機記賬軟件哪個好? 現(xiàn)在常用的記賬app主...

東北網(wǎng)紅小橙子爸爸封號了嗎(東北網(wǎng)紅小橙子爸爸封號了嗎知乎)

東北網(wǎng)紅小橙子爸爸封號了嗎(東北網(wǎng)紅小橙子爸爸封號了嗎知乎)

今天給各位分享東北網(wǎng)紅小橙子爸爸封號了嗎的知識,其中也會對東北網(wǎng)紅小橙子爸爸封號了嗎知乎進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、小橙子是干什么的? 2、哈爾濱小橙子先生的爸爸是做什么工作的? 3、小橙子爸爸怎么死的 4、2歲小橙子爸爸是干...

游咔破解版(嗶咔破解游戲)

游咔破解版(嗶咔破解游戲)

今天給各位分享游咔破解版的知識,其中也會對嗶咔破解游戲進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、游咔游戲盒子為什么一直要刷新 2、游咔加載不出來為什么 3、游咔密碼到底是什么 4、游咔怎么更新 5、游咔游戲盒app打不開 游咔游戲盒子...