0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用robots.txt快速抓取網(wǎng)站

電子工程師 ? 來源:cc ? 2019-01-10 09:08 ? 次閱讀

在我抓取網(wǎng)站遇到瓶頸,想劍走偏鋒去解決時(shí),常常會先去看下該網(wǎng)站的robots.txt文件,有時(shí)會給你打開另一扇抓取之門。

寫爬蟲有很多苦惱的事情,比如:

1.訪問頻次太高被限制;

2.如何大量發(fā)現(xiàn)該網(wǎng)站的URL;

3.如何抓取一個(gè)網(wǎng)站新產(chǎn)生的URL,等等;

這些問題都困擾著爬蟲選手,如果有大量離散IP和賬號,這些都不是問題,但是絕大部分公司都不具備這個(gè)條件的。

我們在工作中寫的爬蟲大多是一次性和臨時(shí)性的任務(wù),需要你快速完成工作就好,當(dāng)遇到上面情況,試著看下robots.txt文件。

舉個(gè)栗子:

老板給你布置一個(gè)任務(wù),把豆瓣每天新產(chǎn)生的影評,書評,小組帖子,同城帖子,個(gè)人日志抓取下來。

初想一下,這任務(wù)得有多大,豆瓣有1.6億注冊用戶,光是抓取個(gè)人日志這一項(xiàng)任務(wù),每個(gè)人的主頁你至少每天要訪問一次。

這每天就得訪問1.6億次,小組/同城帖子等那些還沒算在內(nèi)。

設(shè)計(jì)一個(gè)常規(guī)爬蟲,靠著那幾十個(gè)IP是完不成任務(wù)的。

初窺robots.txt

當(dāng)老板給你了上面的任務(wù),靠著你這一兩桿槍,你怎么完成,別給老板講技術(shù),他不懂,他只想要結(jié)果。

我們來看下豆瓣的robots.txt

https://www.douban.com/robots.txt

看圖片上面紅框處,是兩個(gè)sitemap文件

打開sitemap_updated_index文件看一下:

里面是一個(gè)個(gè)壓縮文件,文件里面是豆瓣頭一天新產(chǎn)生的影評,書評,帖子等等,感興趣的可以去打開壓縮文件看一下。

也就是說每天你只需要訪問這個(gè)robots.txt里的sitemap文件就可以知道有哪些新產(chǎn)生的URL。

不用去遍歷豆瓣網(wǎng)站上那幾億個(gè)鏈接,極大節(jié)約了你的抓取時(shí)間和爬蟲設(shè)計(jì)復(fù)雜度,也降低了豆瓣網(wǎng)站的帶寬消耗,這是雙贏啊,哈哈。

上面通過robots.txt的sitemap文件找到了抓取一個(gè)網(wǎng)站新產(chǎn)生URL的偏方。沿著該思路也能解決發(fā)現(xiàn)網(wǎng)站大量URL的問題。

再舉個(gè)栗子:

老板又給你一個(gè)任務(wù),老板說上次抓豆瓣你說要大量IP才能搞定抓豆瓣每天新產(chǎn)生的帖子,這次給你1000個(gè)IP把天眼查上的幾千萬家企業(yè)工商信息抓取下來。

看著這么多IP你正留著口水,但是分析網(wǎng)站后發(fā)現(xiàn)這類網(wǎng)站的抓取入口很少(抓取入口是指頻道頁,聚合了很多鏈接的那種頁面)。

很容易就把儲備的URL抓完了,干看著這么多IP工作不飽滿。

如果一次性能找到這個(gè)網(wǎng)站幾萬乃至幾十萬個(gè)URL放進(jìn)待抓隊(duì)列里,就可以讓這么多IP工作飽滿起來,不會偷懶了。

我們來看他的robots.txt文件:

https://www.tianyancha.com/robots.txt

打開紅框處的sitemap,里面有3萬個(gè)公司的URL,上圖是1月3號生成的,那個(gè)URL是根據(jù)年月日生成的,你把URL改成1月2號,又能看到2號的sitemap里的幾萬個(gè)公司URL,這樣就能發(fā)現(xiàn)十幾萬個(gè)種子URL供你抓取了。

PS:上面的sitemap其實(shí)也能解決抓取天眼查最近更新的,新產(chǎn)生URL的問題。

小小的一個(gè)取巧,既降低了爬蟲設(shè)計(jì)的復(fù)雜度,又降低了對方的帶寬消耗。

這在工作中非常適用,工作中不會在意你用的框架多好,只在意你做事的快慢和好壞。

善于看robots.txt文件你會發(fā)現(xiàn)一些別有洞天的東西。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84069
  • 爬蟲
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    6769

原文標(biāo)題:Python爬蟲小偏方:如何用robots.txt快速抓取網(wǎng)站?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    robots.txt用法

    robots.txt文件里有中文等非英語字符,請確定該文件是由UTF-8編碼編寫。 robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件,它通常告訴網(wǎng)絡(luò)搜索引擎的漫游器
    發(fā)表于 09-10 21:19

    如何抓取每個(gè)Barcode對應(yīng)的信息,并將其顯示出來

    *.TXT文件中的內(nèi)容,*.txt文件是一個(gè)實(shí)時(shí)更新(30s更新一次)。*.txt文件內(nèi)容主要包括barcode,日期和時(shí)間,DCD。見附件3)抓取每個(gè)Barcode對應(yīng)的信息,并將其
    發(fā)表于 02-21 22:20

    讀取txt文件

    何用labview讀取一個(gè)8列多行的txt文檔
    發(fā)表于 09-19 17:05

    使用curl+wget抓取網(wǎng)頁方法

    連接自動(dòng)斷掉放棄連接2、 proxy代理方式抓取proxy代理下載,是通過連接一臺中間服務(wù)器間接下載url網(wǎng)頁的過程,不是url直接連接網(wǎng)站服務(wù)器下載兩個(gè)著名的免費(fèi)代理網(wǎng)站
    發(fā)表于 02-25 09:54

    CITNO Skill增加快速抓取功能咯

    快速抓取元件功能用在器件布局上發(fā)揮很大的作用,再也不需要為了抓個(gè)元件來回拖動(dòng)屏幕,來回托動(dòng)屏幕費(fèi)時(shí)費(fèi)力,傷眼,效率低。有了這個(gè)工具不管你要的器件在畫布的任何位置都能馬上掛在當(dāng)前屏幕的光標(biāo)上。程序下載百度下吧或3w點(diǎn)citno點(diǎn)com
    發(fā)表于 05-12 20:27

    Altium設(shè)計(jì)中如何抓取圓環(huán)的圓心移動(dòng)?

    抓取圓心移動(dòng)能夠更加方便我們?nèi)ゾ_的設(shè)計(jì),那如何能更快速抓取到圓心呢?
    發(fā)表于 11-13 17:03

    Altium設(shè)計(jì)中如何抓取圓環(huán)的圓心移動(dòng)?

    抓取圓心移動(dòng)能夠更加方便我們?nèi)ゾ_的設(shè)計(jì),那如何能更快速抓取到圓心呢?操作如下:在AD09中,可以放置一個(gè)輔助的過孔到圓心,移動(dòng)圓環(huán)的時(shí)候直接抓取過孔的圓心就好了,至于怎么將過孔放到
    發(fā)表于 11-19 10:46

    使用Python的Web爬網(wǎng)提示和技巧

    main_price?! ?.陷阱  3.1檢查robots.txt  網(wǎng)站抓取規(guī)則可在robots.txt文件中找到。您可以通過在主域名(例如)之后編寫
    發(fā)表于 10-15 16:08

    python網(wǎng)絡(luò)爬蟲概述

    、MySQL、MongoDB、Redis …關(guān)于爬蟲的合法性幾乎每個(gè)網(wǎng)站都有一個(gè)名為robots.txt的文檔,當(dāng)然也有有些網(wǎng)站沒有設(shè)定。對于沒有設(shè)定robots.txt
    發(fā)表于 03-21 16:51

    何用百度硬盤搜索將PDF轉(zhuǎn)換為文本文件txt

    何用百度硬盤搜索將PDF轉(zhuǎn)換為文本文件txt的方法     現(xiàn)在有很多“PDF”轉(zhuǎn)換為“TXT”的軟件,不
    發(fā)表于 10-12 01:54 ?1701次閱讀
    如<b class='flag-5'>何用</b>百度硬盤搜索將PDF轉(zhuǎn)換為文本文件<b class='flag-5'>txt</b>

    何用NetShell快速完成重置Internet協(xié)議

    何用NetShell快速完成重置Internet協(xié)議 Internet協(xié)議是目前我們最常用的協(xié)議之一,于是我研究了一下重置Internet協(xié)議的步驟和語句
    發(fā)表于 03-29 16:56 ?937次閱讀

    Smart_Machines_Robots智能機(jī)器網(wǎng)絡(luò)系列視頻

    Smart_Machines_Robots智能機(jī)器網(wǎng)絡(luò)系列視頻。
    發(fā)表于 03-21 16:10 ?0次下載

    如何才能使用c#實(shí)現(xiàn)網(wǎng)站數(shù)據(jù)的抓取

    何用c# 實(shí)現(xiàn)網(wǎng)站數(shù)據(jù)的抓取?首先大家需要清楚一點(diǎn)的是:任何網(wǎng)站的頁面,無論是php、jsp、aspx這些動(dòng)態(tài)頁面還是用后臺程序生成的靜態(tài)頁面都是可以在瀏覽器中查看其HTML源文件的
    發(fā)表于 10-08 17:46 ?1次下載

    robotstxt robots.txt解析器

    ./oschina_soft/robotstxt.zip
    發(fā)表于 06-22 14:27 ?2次下載
    robotstxt <b class='flag-5'>robots.txt</b>解析器

    何用Burpsuite抓取exe數(shù)據(jù)包?

    前幾天在群里看到有師傅在問如何用Burpsuite抓取exe數(shù)據(jù)包的問題?所以想著寫篇文章簡單記錄一下Burpsuite+Proxifier抓取exe數(shù)據(jù)包的方法。
    的頭像 發(fā)表于 06-12 16:12 ?5672次閱讀
    如<b class='flag-5'>何用</b>Burpsuite<b class='flag-5'>抓取</b>exe數(shù)據(jù)包?