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