內(nèi)容簡述:? ? ?
? ??一:Scrapy Shell? ? ?
? ??二:yield item和請求? ? ?
? ??三:請求傳參-高級請求
一:Scrapy Shell
? ? ? ? 運(yùn)行在終端的工具,用來調(diào)試scrapy粱胜”ぃ可以在未啟動spider的情況下嘗試及調(diào)試代碼,也可以用來測試XPath或CSS表達(dá)式焙压。
????????簡單使用—糗事百科
? ? ? ? scrapy shell? “http://www.baidu.com/”
? ? ? 【溫馨提示】:當(dāng)咱們有時加載https請求時鸿脓,有可能會報錯
? ? ? ? 問題描述:[<twisted.python.failure.Failure twisted.internet.error.ConnectionDone:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????Connection was closed cleanly.>]
? ? ? ? 解決方案:
? ? ? ? ? ? ? ? 第一步: scrapy shell -s USER_AGENT='Mozilla/5.0'
? ? ? ? ????????第二步:fetch(‘url’)
? ? ? ? 示例參考:?fetch("https://www.qiushibaike.com")
?A-response對象
??????屬性
? ? ? ? ? text:字符串格式的html???body:二進(jìn)制格式的html? ? ?encoding:響應(yīng)編碼
? ? ? ? ? url:所請求的url? ? ? ? ? ? ? status:響應(yīng)狀態(tài)碼? ? ? ? ? ? ? headers:響應(yīng)頭
? ? ??方法:
? ? ? ? ?xpath():據(jù)xpath獲取所有selector對象(scrapy內(nèi)部封裝的一個類的對象)的列表
? ? ? ? ? ? ? ??例:獲取糗事百科用戶名
? ? ? ? ? ? ? ? name_list=response.xpath('//div[@class="author clearfix"]//img/@alt')
? ? ? ? ? ? ? ? print(len(name_list))??? ? ? ? ? ? ?print(name_list.extract())
? ? ? ? ? ? ? ? print(name_list.extract()[0])? ??print(name_list.extract_first())? ? ?
? ? ? ? ? css():獲取符合要求的所有selector對象的列表
? ? ? ? ? ? ? ? ?獲取內(nèi)容
? ? ? ? ? ? ? ? ? ? ? name_list=response.css('#content-left a > h2::text')接著extract()
? ? ? ? ? ? ? ? ?獲取屬性
? ? ? ? ? ? ? ? ? ? ?css_list=response.css('#content-left a > img::attr(src)')接著extract()
? ? ? ? ? ? ? ? ? 一般不使用,因為中間scrapy會將這個選擇器給翻譯成xpath再去解析
? ? ? ? ?selector對象
? ? ? ? ? ? ? ? xpath('./'):從當(dāng)前節(jié)點向下開始查找
? ? ? ? ? ? ? ? css():和上面的response的方式一樣
? ? ? ? ? ? ? ? extract():將對象轉(zhuǎn)化為unicode字符串
? ? ? ? ? ? ? ? extract_first():如果xpath獲取不到內(nèi)容extract_first()返回None涯曲,extract()報錯
?? B-Item對象
????? ????????類字典對象,用法和字典一樣野哭,將這個對象轉(zhuǎn)化為字典?stu = dict(stu)
二: yield item和請求
? ? ? ? 校花網(wǎng)? http://www.xiaohuar.com/hua/
? ? ? ? 管道的后期處理:數(shù)據(jù)的存儲|下載
????? 【溫馨提示】寫好pipeline的時候幻件,需要在settings文件中打開一個配置
??????? ITEM_PIPELINES = { 'huaproject.pipelines.HuaprojectPipeline':300,? }
??????? 第一個:處理的管道
??????? 第二個:優(yōu)先級拨黔,越小優(yōu)先級越高(0-1000)
? ??????多頁面抓取及圖片批量下載
????????url規(guī)律
?????????? ????第一頁list-1-0.html
?????????? ????第二頁list-1-1.html
?????????? ????第n頁list-1-(n-1).html
三:請求傳參【高級請求】
? ??? ? ? ? ?如果一個頁面不能將一個item的所有信息全部拿到,需要再次發(fā)送請求绰沥,再次解析才能將item的所有信息拿到篱蝇。這種情況怎么辦?
??? ??????電影天堂??http://www.ygdy8.net/html/gndy/dyzz/index.html