前言
前段時(shí)間在用scrapy爬取某個(gè)網(wǎng)站時(shí)一直報(bào)521錯(cuò)誤,在seeting.py里設(shè)置HTTPERROR_ALLOWED_CODES= [521]后會(huì)發(fā)現(xiàn)返回的response是一段加密的js代碼。這段js代碼是動(dòng)態(tài)取得cookie信息的(但是只有一個(gè)value,故放棄了使用python庫(kù)去執(zhí)行js的打算),最后利用瀏覽器打開(kāi)網(wǎng)頁(yè)將其cookie手動(dòng)添加到爬蟲(chóng)中會(huì)正常返回?cái)?shù)據(jù),最后找到了Ghost.py這個(gè)庫(kù)去模擬瀏覽器打開(kāi)網(wǎng)站行為并動(dòng)態(tài)獲取cookie信息的辦法。
具體步驟.安裝Ghost.py
sudo pip install Ghost.py==0.1.2
from ghost import Ghost from scrapy import log import re class Cookieutil: def __init__(self,url): log.msg("init cookieutil class ,will be get %s cookie information!" %url, log.INFO) gh = Ghost(download_images=False,display=False) gh.open(url) gh.open(url) gh.save_cookies("cookie.txt") gh.exit() def getCookie(self): cookie = "" with open("cookie.txt") as f: temp = f.readlines() for index in temp: cookie += self.parse_oneline(index).replace(""","") return cookie[:-1] def parse_oneline(self,src): oneline = "" if re.search("Set-Cookie",src): oneline = src.split(";")[0].split(":")[-1].strip()+";" return onelinescrapy的spider定時(shí)生成和調(diào)用cookie信息
這里只貼上主要的代碼
headers={ "Cookie":"", "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2", } headers["Cookie"] = Cookieutil("http://www.dmoz.org.cn/").getCookie() def parse_page(self,response): if int(time.time())-self.begin_time>3600: print "get a new cookie arrgment" print self.headers["Cookie"] self.begin_time = int(time.time()) try: self.headers["Cookie"] = Cookieutil("http://www.dmoz.org.cn/").getCookie() except: time.sleep(120) self.headers["Cookie"] = Cookieutil("http://www.dmoz.org.cn/").getCookie()結(jié)語(yǔ)
不過(guò)有個(gè)比較糾結(jié)的問(wèn)題是Ghost.py需要依賴(lài)webkit,以致于在本地開(kāi)發(fā)中能夠正常運(yùn)行,但是放到服務(wù)器中直接報(bào)錯(cuò)(Exception: Ghost.py requires PySide or PyQt4)。
目前為止還沒(méi)找到好的解決辦法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/38166.html
摘要:提升篇之配置增加并發(fā)并發(fā)是指同時(shí)處理的的數(shù)量。其有全局限制和局部每個(gè)網(wǎng)站的限制。使用級(jí)別來(lái)報(bào)告這些信息。在進(jìn)行通用爬取時(shí)并不需要,搜索引擎則忽略。禁止能減少使用率及爬蟲(chóng)在內(nèi)存中記錄的蹤跡,提高性能。 scrapy提升篇之配置 增加并發(fā) 并發(fā)是指同時(shí)處理的request的數(shù)量。其有全局限制和局部(每個(gè)網(wǎng)站)的限制。Scrapy默認(rèn)的全局并發(fā)限制對(duì)同時(shí)爬取大量網(wǎng)站的情況并不適用,因此您需要...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤(pán),搜各種資料模擬瀏覽器登錄方法,可以返回一個(gè)請(qǐng)求給爬蟲(chóng)的起始網(wǎng)站,這個(gè)返回的請(qǐng)求相當(dāng)于,返回的請(qǐng)求會(huì)替代里的請(qǐng)求請(qǐng)求,可以設(shè)置,回調(diào)函數(shù)表單提交,第一個(gè)必須參數(shù),上一次響應(yīng)的對(duì)象,其他參數(shù),表單內(nèi)容等可以將一個(gè)新 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤(pán),搜各種資料:http://www.swpan.cn】 模擬瀏覽器登錄...
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:學(xué)習(xí)網(wǎng)絡(luò)爬蟲(chóng)主要分個(gè)大的版塊抓取,分析,存儲(chǔ)另外,比較常用的爬蟲(chóng)框架,這里最后也詳細(xì)介紹一下。網(wǎng)絡(luò)爬蟲(chóng)要做的,簡(jiǎn)單來(lái)說(shuō),就是實(shí)現(xiàn)瀏覽器的功能。 Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲(chóng)主要分3個(gè)大的版塊:抓取,分析,存儲(chǔ) 另外,比較常用的爬蟲(chóng)框架Scrapy,這里最后也詳細(xì)介紹一下。 首先列舉一下本人總結(jié)的相關(guān)文章,這些覆蓋了入門(mén)網(wǎng)絡(luò)爬蟲(chóng)需要的基本概念和技巧:寧哥的小站-網(wǎng)絡(luò)爬蟲(chóng),當(dāng)我們?cè)跒g覽器中輸入...
摘要:所以我模仿這些爬蟲(chóng)框架的優(yōu)勢(shì),以盡量簡(jiǎn)單的原則,搭配實(shí)際上是開(kāi)發(fā)了這套輕量級(jí)爬蟲(chóng)框架。將下載器,解析器,調(diào)度器,數(shù)據(jù)處理器注入核心成為對(duì)象。提供對(duì)爬蟲(chóng)進(jìn)行管理監(jiān)控。每個(gè)腳本被認(rèn)為是一個(gè),確定一個(gè)任務(wù)。 ??現(xiàn)在有很多爬蟲(chóng)框架,比如scrapy、webmagic、pyspider都可以在爬蟲(chóng)工作中使用,也可以直接通過(guò)requests+beautifulsoup來(lái)寫(xiě)一些個(gè)性化的小型爬蟲(chóng)腳本...
閱讀 1096·2021-11-24 10:24
閱讀 2584·2021-11-22 13:54
閱讀 992·2021-09-24 09:55
閱讀 3592·2019-08-30 15:54
閱讀 1311·2019-08-30 15:44
閱讀 1089·2019-08-30 14:23
閱讀 3195·2019-08-29 13:45
閱讀 1267·2019-08-29 11:19