Scrapy基于selenium結(jié)合爬取淘寶的實(shí)例講解
在對(duì)于淘寶,京東這類(lèi)網(wǎng)站爬取數(shù)據(jù)時(shí),通常直接使用發(fā)送請(qǐng)求拿回response數(shù)據(jù),在解析獲取想要的數(shù)據(jù)時(shí)比較難的,因?yàn)閿?shù)據(jù)只有在瀏覽網(wǎng)頁(yè)的時(shí)候才會(huì)動(dòng)態(tài)加載,所以要想爬取淘寶京東上的數(shù)據(jù),可以使用selenium來(lái)進(jìn)行模擬操作
對(duì)于scrapy框架,下載器來(lái)說(shuō)已經(jīng)沒(méi)多大用,因?yàn)楂@取的response源碼里面沒(méi)有想要的數(shù)據(jù),因?yàn)闆](méi)有加載出來(lái),所以要在請(qǐng)求發(fā)給下載中間件的時(shí)候直接使用selenium對(duì)請(qǐng)求解析,獲得完整response直接返回,不經(jīng)過(guò)下載器下載,上代碼
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time from scrapy.http.response.html import HtmlResponse from scrapy.http.response.text import TextResponse from selenium.webdriver import ActionChains class TaobaoMiddleware(object): #處理請(qǐng)求函數(shù) def process_request(self,request,spider): #聲明一個(gè)Options對(duì)象 opt = Options() #給對(duì)象添加一個(gè)--headless參數(shù),表示無(wú)頭啟動(dòng) opt.add_argument('--headless') #把配置參數(shù)應(yīng)用到驅(qū)動(dòng)創(chuàng)建的對(duì)象 driver = webdriver.Chrome(options=opt) #打開(kāi)requests中的地址 driver.get(request.url) #讓瀏覽器滾動(dòng)到底部 for x in range(1,11): j = x / 10 js = "document.documentElement.scrollTop = document.documentElement.scrollHeight*%f"%j driver.execute_script(js) #每次滾動(dòng)等待0.5s time.sleep(5) #獲取下一頁(yè)按鈕的標(biāo)簽 next_btn =driver.find_element_by_xpath('//span[contains(text(),"下一頁(yè)")]') #睡眠0.5秒 time.sleep(0.5) #對(duì)下一頁(yè)標(biāo)簽進(jìn)行鼠標(biāo)右鍵觸發(fā)事件 ActionChains(driver).context_click(next_btn).click().perform() # driver.save_screenshot('截圖.png') #把驅(qū)動(dòng)對(duì)象獲得的源碼賦值給新變量 page_source = driver.page_source #退出 driver.quit() #根據(jù)網(wǎng)頁(yè)源代碼,創(chuàng)建Htmlresponse對(duì)象 response = HtmlResponse(url=request.url,body=page_source,encoding='utf-8',request=request) #因?yàn)榉祷氐氖俏谋鞠?所以需要指定字符編碼格式 return response def process_response(self,request,response,spider): return response def process_exception(self,request,exception,spider): pass
以上這篇Scrapy基于selenium結(jié)合爬取淘寶的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Scrapy+Selenium自動(dòng)獲取cookie爬取網(wǎng)易云音樂(lè)個(gè)人喜愛(ài)歌單
- 如何在scrapy中集成selenium爬取網(wǎng)頁(yè)的方法
- scrapy與selenium結(jié)合爬取數(shù)據(jù)(爬取動(dòng)態(tài)網(wǎng)站)的示例代碼
- scrapy結(jié)合selenium解析動(dòng)態(tài)頁(yè)面的實(shí)現(xiàn)
- scrapy利用selenium爬取豆瓣閱讀的全步驟
- python網(wǎng)絡(luò)爬蟲(chóng) Scrapy中selenium用法詳解
- selenium在scrapy中的使用代碼
相關(guān)文章
通過(guò)Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟
Jenkins是一個(gè)流行的開(kāi)源自動(dòng)化服務(wù)器,用于快速構(gòu)建、測(cè)試和部署軟件,本文主要介紹了通過(guò)Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10python 去除二維數(shù)組/二維列表中的重復(fù)行方法
今天小編就為大家分享一篇python 去除二維數(shù)組/二維列表中的重復(fù)行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)(續(xù))
這篇文章主要詳細(xì)介紹了python構(gòu)建深度神經(jīng)網(wǎng)絡(luò)DNN,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03python?中collections的?deque使用詳解
這篇文章主要介紹了python中collections的deque使用詳解,deque是一個(gè)雙端隊(duì)列,如果要經(jīng)常從兩端append的數(shù)據(jù),選擇這個(gè)數(shù)據(jù)結(jié)構(gòu)就比較好了,更多相關(guān)內(nèi)容,需要的小伙伴可以參考下面文章內(nèi)容2022-09-09Python算法繪制特洛伊小行星群實(shí)現(xiàn)示例
這篇文章主要介紹了Python算法繪制特洛伊小行星群實(shí)現(xiàn)示例,這個(gè)小示例完成后非常的有意思也會(huì)使你在Python學(xué)習(xí)的道路上感到一絲絲小成就2021-10-10python opencv把一張圖片嵌入(疊加)到另一張圖片上的實(shí)現(xiàn)代碼
這篇文章主要介紹了python opencv把一張圖片嵌入(疊加)到另一張圖片上,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python爬取數(shù)據(jù)并寫(xiě)入MySQL數(shù)據(jù)庫(kù)的實(shí)例
今天小編就為大家分享一篇Python爬取數(shù)據(jù)并寫(xiě)入MySQL數(shù)據(jù)庫(kù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06