成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Scrapy框架get() 、getall() 、extract() 、extract_first(

liangzai_cool / 1443人閱讀

摘要:前者更好用,取不到就返回,后者取不到就一個(gè)錯(cuò)誤。發(fā)現(xiàn)使用得到的是一個(gè)對(duì)象實(shí)例所以是對(duì)象實(shí)例的方法繼續(xù)使用,觀察區(qū)別彼女制服著替。彼女制服著替。發(fā)現(xiàn)對(duì)于類型的對(duì)象,并不能使用方法,而使用可以文末附官方文檔鏈接鏈接官方教程關(guān)于方法

開(kāi)篇明義:get() 、getall() 是新版本的方法,extract() 、extract_first()是舊版本的方法。

前者更好用,取不到就返回None,后者取不到就raise一個(gè)錯(cuò)誤。

推薦使用新方法,官方文檔中也都改用前者了

看官方文檔(鏈接附在文末),看到了關(guān)于get()、get()方法的使用,查閱網(wǎng)絡(luò)沒(méi)有資料,那就自己記錄一下。
y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~y( ˙?. )耶~
先說(shuō)結(jié)論:
對(duì)于scrapy.selector.unified.SelectorList對(duì)象,getall()==extract(),get()==extract_first()
對(duì)于scrapy.selector.unified.Selector對(duì)象,getall()==extract(),get()!=extract_first()
使用scrapy shell 進(jìn)行測(cè)試

scrapy shell https://gavbus668.com/

得到如下結(jié)果:

皆是常規(guī)操作

返回html的前200個(gè)字符,看看沒(méi)有發(fā)生錯(cuò)誤

response.text[:200]

得到:

Out[3]: "rnrn    rn    rn    rn    

bingo

繼續(xù),使用Scrapy Selector下一步操作

In [5]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")
Out[5]:
[,
,
,
]
In [10]: type(response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()"))
Out[10]: scrapy.selector.unified.SelectorList

發(fā)現(xiàn)使用Selector得到的是一個(gè)SelectorList對(duì)象實(shí)例

所以get() 、getall() 、extract() 、extract_first()是SelectorList對(duì)象實(shí)例的方法

繼續(xù)使用get() 、getall() 、extract() 、extract_first(),觀察區(qū)別:

In [6]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()").get()
Out[6]: "DNW-025 彼女が制服に著替えたら。5"
In [7]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()").getall()
Out[7]: ["DNW-025 彼女が制服に著替えたら。5", "rntttttt", "rntttttt", " / "]
In [8]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()").extract()
Out[8]: ["DNW-025 彼女が制服に著替えたら。5", "rntttttt", "rntttttt", " / "]
In [9]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()").extract_first()
Out[9]: "DNW-025 彼女が制服に著替えたら。5"

over,總結(jié)一下:
對(duì)于scrapy.selector.unified.SelectorList對(duì)象
get() == extract_first()
返回的是一個(gè)list,里面包含了多個(gè)string,如果只有一個(gè)string,則返回["我很孤獨(dú)"]這樣的形式
getall() == extract()
返回的是string,list里面第一個(gè)string

extract_first()與get()有區(qū)別與Selector對(duì)象有關(guān)

In [17]: type(response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()"))
Out[17]: scrapy.selector.unified.SelectorList

In [18]: type(response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0])
Out[18]: scrapy.selector.unified.Selector

In [19]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0].get()
Out[19]: "DNW-025 彼女が制服に著替えたら。5"

In [20]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0].getall()
Out[20]: ["DNW-025 彼女が制服に著替えたら。5"]

In [21]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0].extract()
Out[21]: "DNW-025 彼女が制服に著替えたら。5"

In [22]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0].extract_first()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
 in 
----> 1 response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0].extract_first()

AttributeError: "Selector" object has no attribute "extract_first"

In [23]: response.xpath("http://*[@id="waterfall"]/div[1]/a/div[2]/span/text()")[0]
Out[23]: 

發(fā)現(xiàn):對(duì)于Selector類型的對(duì)象,并不能使用extract_first()方法,而使用get()可以

文末附官方文檔鏈接鏈接
Scrapy官方教程——關(guān)于get()、getall()方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43396.html

相關(guān)文章

  • scrapy入門教程——爬取豆瓣電影Top250!

    摘要:注意爬豆爬一定要加入選項(xiàng),因?yàn)橹灰馕龅骄W(wǎng)站的有,就會(huì)自動(dòng)進(jìn)行過(guò)濾處理,把處理結(jié)果分配到相應(yīng)的類別,但偏偏豆瓣里面的為空不需要分配,所以一定要關(guān)掉這個(gè)選項(xiàng)。 本課只針對(duì)python3環(huán)境下的Scrapy版本(即scrapy1.3+) 選取什么網(wǎng)站來(lái)爬取呢? 對(duì)于歪果人,上手練scrapy爬蟲的網(wǎng)站一般是官方練手網(wǎng)站 http://quotes.toscrape.com 我們中國(guó)人,當(dāng)然...

    senntyou 評(píng)論0 收藏0
  • scrapy學(xué)習(xí)之路2(圖片下載與下載的路徑獲取)

    摘要:圖片下載和拿到下載后的路徑小封面圖的爬取,后面通過(guò)傳到中詳情頁(yè)的爬取詳情頁(yè)的完整地址下一頁(yè)的爬取與請(qǐng)求不明打開(kāi)功能注意如要進(jìn)一步定制功能補(bǔ)充新建 圖片下載和拿到下載后的路徑 1 items.py import scrapy class InfoItem(scrapy.Item): url = scrapy.Field() url_object_id = scrapy....

    WelliJhon 評(píng)論0 收藏0
  • 從零開(kāi)始寫爬蟲

    摘要:幾個(gè)朋友對(duì)爬蟲很感興趣,他們也都是開(kāi)發(fā)人員,一個(gè)開(kāi)發(fā)兩個(gè)開(kāi)發(fā),都沒(méi)有過(guò)項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),正好其中一個(gè)最近要爬一個(gè)網(wǎng)店的產(chǎn)品信息,所以希望我能拿這網(wǎng)站當(dāng)寫一個(gè)爬蟲來(lái)給他們參考學(xué)習(xí)。我們就在這個(gè)文件里開(kāi)發(fā)爬蟲的相關(guān)邏輯。 幾個(gè)朋友對(duì)爬蟲很感興趣,他們也都是開(kāi)發(fā)人員,一個(gè)PHP開(kāi)發(fā)兩個(gè)JAVA開(kāi)發(fā),都沒(méi)有過(guò)python項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),正好其中一個(gè)最近要爬一個(gè)網(wǎng)店的產(chǎn)品信息,所以希望我能拿這網(wǎng)站當(dāng)d...

    wwq0327 評(píng)論0 收藏0
  • 爬蟲爬 JSON HTML 數(shù)據(jù)

    摘要:最近這兩周在忙著給公司爬一點(diǎn)數(shù)據(jù),更文的速度有一點(diǎn)下降,預(yù)計(jì)今天就爬完了,總結(jié)總結(jié)經(jīng)驗(yàn)。一個(gè)爬蟲的框架?;镜葍r(jià)于選擇其中的文字提取屬性文檔,這個(gè)我不會(huì),我也沒(méi)看使用這個(gè)類庫(kù)解析如請(qǐng)求方式可以用來(lái)給中文字符數(shù)據(jù)放入傳遞即可。 最近這兩周在忙著給公司爬一點(diǎn)數(shù)據(jù),更文的速度有一點(diǎn)下降,預(yù)計(jì)今天就爬完了,總結(jié)總結(jié)經(jīng)驗(yàn)。 其實(shí)之前我司是有專門做爬蟲的,不用前端這邊出人干活。后來(lái)那人離職了,有可...

    Hegel_Gu 評(píng)論0 收藏0
  • 爬蟲爬 JSON HTML 數(shù)據(jù)

    摘要:最近這兩周在忙著給公司爬一點(diǎn)數(shù)據(jù),更文的速度有一點(diǎn)下降,預(yù)計(jì)今天就爬完了,總結(jié)總結(jié)經(jīng)驗(yàn)。一個(gè)爬蟲的框架?;镜葍r(jià)于選擇其中的文字提取屬性文檔,這個(gè)我不會(huì),我也沒(méi)看使用這個(gè)類庫(kù)解析如請(qǐng)求方式可以用來(lái)給中文字符數(shù)據(jù)放入傳遞即可。 最近這兩周在忙著給公司爬一點(diǎn)數(shù)據(jù),更文的速度有一點(diǎn)下降,預(yù)計(jì)今天就爬完了,總結(jié)總結(jié)經(jīng)驗(yàn)。 其實(shí)之前我司是有專門做爬蟲的,不用前端這邊出人干活。后來(lái)那人離職了,有可...

    cocopeak 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<