scrapy爬蟲一定會用到的小技巧

處處是坑,且用且珍惜

入坑Python爬蟲已經(jīng)一周多了彼水,哦崔拥,不對,這篇文章本打算上周末寫的凤覆,然而周末總是過的很快(相信都深有體會链瓦,哈哈),結(jié)果寫了個框架盯桦,內(nèi)容一點也沒填慈俯,所以,到現(xiàn)在應(yīng)該是已經(jīng)兩周多了拥峦。踩了很多坑贴膘,謹(jǐn)以此文紀(jì)念我一周多的Python的Scrapy爬蟲

scrapy入門

文檔(0.24中文):http://scrapy-chs.readthedocs.io/zh_CN/0.24/index.html
文檔(1.2英文):https://doc.scrapy.org/en/1.2/index.html

寫了好多了,感覺停不下來了略号,還是另寫一篇入門文章吧刑峡,寫好后鏈接更新到這里
今天還是先把上周挖好的坑填了吧

scrapy的meta

scrapy的meta的作用就是在執(zhí)行scrapy.Request()函數(shù)時把一些回掉函數(shù)中需要的數(shù)據(jù)傳進(jìn)去洋闽,meta必須是一個字典,在下一個函數(shù)中可以使用response.meta防問
如:

def parse(self, response):
  yield scrapy.Request(url='baidu.com', callback=detailpage, meta={website:'百度'})
def detailpage(self, response):
  website = response.meta['website']

Python中的json解析:

爬蟲離不了json的解析突梦,很多傳統(tǒng)網(wǎng)站中可能并不需要诫舅,但是目前很多新網(wǎng)站中都使用json進(jìn)行數(shù)據(jù)傳輸,動態(tài)展現(xiàn)阳似,所以json的解析對于爬蟲是很重要的

python解析json的包是json骚勘,使用時需要先引入json包
import json
常用的三個函數(shù)load(),loads(),dumps()
json.loads():傳入一個json字符串,返回一個字符串解析出來的list或dict
json.load():這貨長的和json.loads()很像撮奏,但是絕對不一樣俏讹,這個函數(shù)的作用是從文件中讀取json并解析成dict或list
json.dumps():把一個dict或list轉(zhuǎn)換成字符串,相當(dāng)于json.loads()的逆向過程
還有一個json.dump():與文件操作結(jié)合的畜吊,實際中用的不多泽疆,不再介紹
例:

import json
dict = {'name':'qitiandasheng','age':18}
str = json.dumps(dict)
data = json.loads(str)
with open('test.json','w') as f:
  data = json.load(f)

字符串函數(shù):

常見的字符串處理函數(shù):
replace():字符串類型才有這個函數(shù),傳入兩個參數(shù)玲献,第一個是需要替換的字符串殉疼,第二個是替換成什么,會循環(huán)替換所有匹配到的字符串
strip():去除左右兩邊的空字符

正則表達(dá)式:

對于字符串處理捌年,還有更強大的正則表達(dá)式瓢娜,python中要使用正則表達(dá)式,需要先引入re模塊
import re
Python中正則表達(dá)式有兩種使用方式礼预,一種是通過re模塊的compile()函數(shù)先生成一個正則表達(dá)式對象眠砾,然后用這個正則表達(dá)式對象去匹配字符串,這種方式調(diào)用函數(shù)時不需要傳入正則表達(dá)式托酸,當(dāng)一個正則表達(dá)式需要重復(fù)多次使用時建議使用此方式褒颈,他會先編譯正則表達(dá)式,然后再去匹配励堡,速度想對較快谷丸;還有一種方式是直接使用re模塊的各個函數(shù),第一個參數(shù)需要傳入正則表達(dá)式

常用的四個函數(shù):
re.compile():傳入正則表達(dá)式字符串应结,推薦使用r''的這種原始字符串刨疼,不需要對一些特定字符轉(zhuǎn)義,此函數(shù)返回一個正則表達(dá)式對象
re.match():從字符串的開始處匹配摊趾,匹配到返回match對象
re.search():從任意字符處開始匹配币狠,匹配到就返回一個match對象
re.findall():從任意字符處開始匹配,匹配到所有的結(jié)果砾层,返回一個list

match()search()返回的是一個match對象,有group()groups()兩個方法:
group():不傳參數(shù)時相當(dāng)于group(0)返回所有匹配的結(jié)果贱案,當(dāng)傳入數(shù)字時肛炮,如group(1)止吐,返回第1組括號匹配到的結(jié)果
groups():以tuple形式返回所有匹配到的結(jié)果

re.findall()的返回結(jié)果:
list中每個元素的值的類型,取決于正則表達(dá)式的寫法
當(dāng)list中元素是字符串時:你的正則表達(dá)式中沒有捕獲的組(不分組侨糟,或非捕獲分組)
字符串的值就是你的正則表達(dá)式所匹配到的單個完整的字符串
當(dāng)list中元素是tuple時:你的正則表達(dá)式中有(帶捕獲的)分組(簡單可理解為有括號)
tuple的值碍扔,是各個group的值所組合出來的

https://m.baidu.com/feed/data/landingpage?nid=2740700877946007370&n_type=1&p_from=2&type=share

換行符^M

一大坑,windows和linux換行符不同秕重,在windows上編輯的文件上傳到linux上就會多一個^M符號

爬過的頁面不會再爬

scrpay有個機制不同,在一個spider中,當(dāng)一個向一個url發(fā)送請求之后溶耘,如果再次請求該url二拐,scrapy不在處理

allowed domains

生成spider時,會在allowed domains中加入允許訪問的域名凳兵,如果在此spider中訪問改域名外的url百新,scrapy不會請求

fiddler的https配置

首先要配置fiddler抓取https的包:

Paste_Image.png

然后,在手機上輸入庐扫,代理ip和端口饭望,如192.168.1.5:8888,點擊FiddlerRootcertificate安裝證書形庭,就可以抓取https的數(shù)據(jù)包了

python新手常見錯誤:https://www.oschina.net/question/89964_62779

做過兩年多公眾號的我寫東西盡然毫無排版铅辞,哈哈哈哈
終于寫完了,睡覺zzz
明天有時間把scrapy入門補上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末萨醒,一起剝皮案震驚了整個濱河市斟珊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌验靡,老刑警劉巖倍宾,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胜嗓,居然都是意外死亡高职,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門辞州,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怔锌,“玉大人,你說我怎么就攤上這事变过“T” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵媚狰,是天一觀的道長岛杀。 經(jīng)常有香客問我,道長崭孤,這世上最難降的妖魔是什么类嗤? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任糊肠,我火速辦了婚禮,結(jié)果婚禮上遗锣,老公的妹妹穿的比我還像新娘货裹。我一直安慰自己,他們只是感情好精偿,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布弧圆。 她就那樣靜靜地躺著,像睡著了一般笔咽。 火紅的嫁衣襯著肌膚如雪搔预。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天拓轻,我揣著相機與錄音斯撮,去河邊找鬼。 笑死扶叉,一個胖子當(dāng)著我的面吹牛勿锅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枣氧,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼溢十,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了达吞?” 一聲冷哼從身側(cè)響起张弛,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酪劫,沒想到半個月后吞鸭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡覆糟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年刻剥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滩字。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡造虏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出麦箍,到底是詐尸還是另有隱情漓藕,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布挟裂,位于F島的核電站享钞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诀蓉。R本人自食惡果不足惜嫩与,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一寝姿、第九天 我趴在偏房一處隱蔽的房頂上張望交排。 院中可真熱鬧划滋,春花似錦、人聲如沸埃篓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽架专。三九已至同窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間部脚,已是汗流浹背想邦。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留委刘,地道東北人丧没。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像锡移,于是被迫代替她去往敵國和親呕童。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • scrapy學(xué)習(xí)筆記(有示例版) 我的博客 scrapy學(xué)習(xí)筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲模...
    陳思煜閱讀 12,713評論 4 46
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理淆珊,服務(wù)發(fā)現(xiàn)夺饲,斷路器,智...
    卡卡羅2017閱讀 134,699評論 18 139
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,238評論 0 4
  • re模塊手冊 本模塊提供了和Perl里的正則表達(dá)式類似的功能施符,不關(guān)是正則表達(dá)式本身還是被搜索的字符串往声,都可以...
    喜歡吃栗子閱讀 4,012評論 0 13
  • 孩子的思想
    amptygirl閱讀 388評論 0 1