自學(xué)爬蟲(chóng)——老馬惹不起,簡(jiǎn)書(shū)謝謝你(爬蟲(chóng)怎么自學(xué))
這個(gè)爬蟲(chóng)是個(gè)通用爬蟲(chóng),去用心的了解scrapy框架,你就能輕松駕馭
https://github.com/a371057600/python-paChong-
這里是我的不專(zhuān)業(yè)的github,不逼逼直接搬來(lái)用吧,不推薦重復(fù)造輪子,對(duì)著代碼多讀幾次就好,除非練手,不然不推薦重新敲,當(dāng)然,能優(yōu)化,改到你想要的功能是最好的.
把輪子用到了爬頭條上面
我覺(jué)得,在頭條上面教大家爬頭條好像不是太好(雖然,頭條也是爬別人的新聞)
頭條的反爬方法基本跟微博也是一樣,但是不推薦爬微博,因?yàn)槲⒉┐罅康馁~號(hào)和原創(chuàng)內(nèi)容,估計(jì)不登錄也不能爬,登陸了就會(huì)廢號(hào).
本來(lái),計(jì)劃是爬淘寶的,但是無(wú)論怎么爬都會(huì)重定向到登錄頁(yè)面,用selemui也沒(méi)用(實(shí)際有用,你只要在爬取的時(shí)候登錄成為操作就好,但是這就類(lèi)麻煩了.畢竟淘寶賬號(hào)很重要的…)所以,最后折中爬了簡(jiǎn)書(shū),謝謝簡(jiǎn)書(shū)爸爸的教導(dǎo).
圖片描述(最多50字)
from scrapy import signals
from selenium import webdriver
import time
from scrapy.http.response.html import HtmlResponse
class SeleniumDownloadMiddleware(object):
def init(self):
self.driver = webdriver.Chrome(executable_path=r\”C:Workpythonchromedriver.exe\”)
def process_request(self,request,spider):
self.driver.get(request.url)
time.sleep(1)
try:
while True:
showMore = self.driver.find_element_by_class_name(\’show-more\’)
showMore.click()
time.sleep(0.3)
if not showMore:
break
except:
pass
source = self.driver.page_source
response = HtmlResponse(url=self.driver.current_url,body=source,request=request,encoding=\’utf-8\’)
return responsege
大的門(mén)戶(hù)網(wǎng)站你可以爬,爬了之后記得告訴我
獲取ajax數(shù)據(jù)的方式:
直接分析ajax調(diào)用的接口。然后通過(guò)代碼請(qǐng)求這個(gè)接口。
使用Selenium chromedriver模擬瀏覽器行為獲取數(shù)據(jù)。
方式優(yōu)點(diǎn)缺點(diǎn)分析接口直接可以請(qǐng)求到數(shù)據(jù)。不需要做一些解析工作。代碼量少,性能高。分析接口比較復(fù)雜,特別是一些通過(guò)js混淆的接口,要有一定的js功底。容易被發(fā)現(xiàn)是爬蟲(chóng)。
圖片描述(最多50字)
selenium直接模擬瀏覽器的行為。瀏覽器能請(qǐng)求到的,使用selenium也能請(qǐng)求到。爬蟲(chóng)更穩(wěn)定。代碼量多。性能低。
PS:本人全部自學(xué),發(fā)送到頭條也只是作為學(xué)習(xí)經(jīng)歷,順便分享經(jīng)驗(yàn),沒(méi)有炫耀和裝大佬的意向,反而有互相學(xué)習(xí)尋求幫助的想法.
醫(yī)生對(duì)病人說(shuō),你們有選擇不痛苦的權(quán)利.但是,各位自學(xué)的哥們,我們沒(méi)有選擇的權(quán)利,學(xué)習(xí)的過(guò)程必然是艱辛痛苦的,程序猿996不是為了誰(shuí),真的是因?yàn)橄矚g,真的是想要進(jìn)步所以才會(huì)996.死在自己喜歡的工作上何嘗不是鐘享受呢.
不求認(rèn)同,但是不希望噴子進(jìn)來(lái),這只是個(gè)筆記.