1. 程式人生 > >繞過ROBOTS規則,轉向頁面抓取配置,內容大小限制

繞過ROBOTS規則,轉向頁面抓取配置,內容大小限制

1. 如何繞過目標站點的robots.txt限制 
多數站點都是隻允許百度、google等搜尋引擎抓取的,所以會在robots.txt裡限制其他爬蟲。 
nutch自然是會遵循robots協議的,但是我們可以通過修改nutch原始碼來繞過限制。 
相關程式碼位於(nutch版本1.5.1,其他版本未測試): 
org.apache.nutch.fetcher.Fetcher的run方法. 

找到以下幾行程式碼並註釋掉就OK了。 

if (!rules.isAllowed(fit.u)) {
                // unblock
                fetchQueues.finishFetchItem(fit, true);
                if (LOG.isDebugEnabled()) {
                  LOG.debug("Denied by robots.txt: " + fit.url);
                }
                output(fit.url, fit.datum, null, ProtocolStatus.STATUS_ROBOTS_DENIED, CrawlDatum.STATUS_FETCH_GONE);
                reporter.incrCounter("FetcherStatus", "robots_denied", 1);
                continue;
              }

2. url掉轉導致html parse不成功的問題  在抓取百度百科的景點資料時,發現部分頁面不會走html parse部分的邏輯,而我的plugin是基於HtmlParserFilter擴充套件點的,因而沒有生效。 

後來發現請求部分頁面的連結返回的http狀態為301,跳轉之後才會到真正頁面,而nutch預設是不會抓取跳轉後的頁面的.這時需要修改nutch-site.xml,加入以下配置即可,nutch-default.xml裡的預設值是0,我們這裡改成一個大於0的值,nutch就會繼續抓取跳轉後的頁面了。 

<property>
  <name>http.redirect.max</name>
  <value>2</value>
  <description>The maximum number of redirects the fetcher will follow when
  trying to fetch a page. If set to negative or 0, fetcher won't immediately
  follow redirected URLs, instead it will record them for later fetching.
  </description>
</property>


3. 抽取的過程中發現某些屬性老是抽不到,而在不使用nutch抓取的情況下是能抽到的,進而懷疑nutch抓取的頁面不全。於是去google了一下"nutch content limit",發現nutch有這麼一個配置項: 

<property>
  <name>http.content.limit</name>
  <value>65536</value>
  <description>The length limit for downloaded content using the http://
  protocol, in bytes. If this value is nonnegative (>=0), content longer
  than it will be truncated; otherwise, no truncation at all. Do not
  confuse this setting with the file.content.limit setting.
  </description>
</property>

 
用來限制抓取內容的大小,放大10倍後,問題解決。 

需要注意的是nutch還有一個很容易混淆的配置項: 

<property>
  <name>file.content.limit</name>
  <value>65536</value>
  <description>The length limit for downloaded content using the file://
  protocol, in bytes. If this value is nonnegative (>=0), content longer
  than it will be truncated; otherwise, no truncation at all. Do not
  confuse this setting with the http.content.limit setting.
  </description>
</property>



兩個配置用於的協議不同,前者是http協議,後者是file協議,我一開始就配置錯了,折騰了半天。。。 

PS:最後推薦兩篇介紹nutch的文章,在官方文件不那麼給力的情況下,這兩篇文章給了我不小的幫助,感謝下作者。 
http://www.atlantbh.com/apache-nutch-overview/ 對nutch的整體流程做了介紹 
http://www.atlantbh.com/precise-data-extraction-with-apache-nutch/ 用實際例子介紹了nutch plugin的開發和部署

相關推薦

繞過ROBOTS規則轉向頁面配置內容大小限制

1. 如何繞過目標站點的robots.txt限制 多數站點都是隻允許百度、google等搜尋引擎抓取的,所以會在robots.txt裡限制其他爬蟲。 nutch自然是會遵循robots協議的,但是我們可以通過修改nutch原始碼來繞過限制。 相關程式碼位於(nutch版本1

php圖片進行內容提取解析文字性pdf進行內容文字提取解析

規則 服務 內容 利用 網站發布 百度 unicode 表格 返回 2018年7月7日18:52:17 php是用純算法,自己是提取圖片內容不是不行,可以但是優化起來很麻煩還得設計學習庫,去矯正數據的正確率 對於大多數項目來說,如果不是做ocr服務,就不必要做需求工具或者

《一出好戲》講述人性使用Python貓眼近10萬條評論並分析一起揭秘“這出好戲”到底如何?

generate pro hand stk 同時 readlines 看電影 就是 msh 黃渤首次導演的電影《一出好戲》自8月10日在全國上映,至今已有10天,其主演陣容強大,相信許多觀眾也都是沖著明星們去的。目前《一出好戲》在貓眼上已經獲得近60萬個評價,評分為8.2

微信好友大揭秘使用Python朋友圈數據通過人臉識別全面分析好友一起看透你的“朋友圈”

類型 get ads pid 地圖 文本文 .json image pack 微信:一個提供即時通訊服務的應用程序,更是一種生活方式,超過數十億的使用者,越來越多的人選擇使用它來溝通交流。 不知從何時起,我們的生活離不開微信,每天睜開眼的第一件事就是打開微信,關註著朋友圈裏

爬蟲實戰-酷狗音樂資料--XPathPyquery,Beautifulsoup資料提取對比實戰

網站: http://www.kugou.com/yy/html/rank.html 爬取目標: 酷酷狗飆升榜的歌手,歌曲名字,歌曲連結等內容,存到Mysql資料庫中 網頁解析: 此次爬取採用三種解析方式: 程式碼如下: import requests from l

selenium點選連結進入子頁面內容(新聞案例一)

找了一個新聞網站練習爬蟲抓取,目標:逐一點選目錄標題,進入詳細新聞頁面,抓取子頁面的標題和正文內容並打印出來,返回目錄標題頁,點選下一篇文章。注:沒有新開視窗,是在原視窗實現跳轉。新開視窗進行抓取看下一篇文章。 試了很多種方法都抓取不到class=rightContent下

微信好友大揭祕使用Python朋友圈資料通過人臉識別全面分析好友一起看透你的“朋友圈”

微信:一個提供即時通訊服務的應用程式,更是一種生活方式,超過數十億的使用者,越來越多的人選擇使用它來溝通交流。 不知從何時起,我們的生活離不開微信,每天睜開眼的第一件事就是開啟微信,關注著朋友圈裡好友的動態,而朋友圈中或虛或實的狀態更新,似乎都在證明自己的“有趣

Uncaught ReferenceError: jp2 is not defined用jsonpqq音樂總是說回撥函式沒有定義

問題如下參考連結:https://segmentfault.com/q/1010000010051040 用jsonp抓取qq音樂總是說回撥函式沒有定義, 我的要實現時候的步驟 1。第一步 我要實現的目的 問題:如題 我的部分程式碼: import originJSON

curl資料獲取不到return的資料

情景:在A網站的某個介面通過curl去請求B網站的某個介面的資料。結果在A網站介面列印總是顯示返回的資料為空字串如下: 解決辦法:將B網站的介面中資料的return 改為echo 就可以了。cur

自從有了Phantomjs和Casperjs後臺網頁和互動變得異常的簡單

Casperjs是基於Phantomjs的,而Phantom JS是一個伺服器端的 JavaScript API 的 WebKit。      這跟我一直想找個自帶瀏覽器核心的後臺東西的想法“暗合”。所以,在我發現這東西的時候就已經開始不由自主的興奮起來了,研究一番之後

使用NodeJs實現資料

cb({"title":"如果他喜歡你,就不會曖昧不清;如果他不再聯絡你,別為他找理由","date":"2011-05-12","auth":"午夜未殤","content":"  1、如果他被動矜持。\r\n  \r\n  “也許他不想破壞我們的友誼”\r\n  \r\n  “也許他害羞”“也許他自卑”

鏈家地產頁面實驗以及二手房資訊統計概覽

原本該練習專案是想用來搜尋購物網站某商品的降價搶購資訊的,比如《什麼值得買》。 但是那個網站貌似有防爬蟲機制,因此轉移目標,改搜搜二手房資訊,想想應該會有人有這種需求的,呵呵呵呵呵呵呵呵。。。。。 正好鏈家地產的頁面可以順利抓取,而且該網站的房源資訊查詢

php爬蟲教程(一) 簡單的頁面

最近朋友抓取點資料,寫了幾個抓取資料的指令碼。 主要功能是,分別抓起x了麼,美x,x度外賣的餐廳和菜品資料 ,後期我把程式碼分享出來。 今天就先說說簡單的頁面抓取 ---------------

java爬蟲資料儲存為excel檔案

下載jsoup jar包和poi jar包 City.java package dataToExcel; public class City { private String name; private String url;

黃曆Python寫的一個指令碼

專案的需要,需要抓取黃曆資訊。 於是用Python寫了一段小指令碼。抓取的源是在QQ的網站上刮出來的。需要注意的是,該源請求返回的是一個JSON,需要下載Python的JSON包,可以在網上Google,附件也附上這個包。不廢話,上原始碼。 #!/usr/bin/pytho

eNSP模擬器拓撲圖:浮動路由的實際作用和分析默認路由的配置包分析

操作 劃線 with 提示 實驗 三臺 常用 了解 為什麽 本篇介紹一下浮動路由和默認路由的配置和一些講解本篇內容附帶詳細的分析講解。會敲命令並不代表什麽,能敲明白才是關鍵。 往後的篇章內容 都盡量不寫地址配置了,如果地址都還不會配置的話,可以去翻一翻其他博文了解一下 打開

SpringCloud系列九:SpringCloudConfig 基礎配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服務端、抓取配置文件信息、客戶端使用 SpringCloudConfig 進行配置、單倉庫目錄匹配、應用倉庫自動選擇、倉庫匹配模式)

servers driver 這樣的 .com tco ces 上傳 [] 應用名 1、概念:SpringCloudConfig 基礎配置 2、具體內容 通過名詞就可以發現,SpringCloudConfig 核心作用一定就在於進行配置文件的管理上。也就是說為了更好的進行所

隨筆:ajax傳遞數組layui父子頁面傳值下來菜單賦值頁面數據獲取表格數據替換為字符串

形式 子頁面 html title NPU 傳遞 form 開啟 設置 一.Ajax向後臺傳遞數組問題:(聲明前臺我使用的layui框架)例:我們要多前臺一個數據表格進行批量刪除操作,我們通過復選框選中數據id,將id存入一個數組中,然後利用ajax傳遞給後臺,完成批量刪除

ionic-infinite在隱藏後重新整理頁面重新載入資料無法下拉載入的問題

問題描述: /** * doInfinite上拉載入 */ doInfinite(infinite) { this.index++; this.infinite=infinite

專案釋出到各個電腦上css樣式都變了jsp頁面佈局亂了怎麼處理

1.在做專案開始的時候,佈局頁面,就應該設定寬高為56%或者?%,而不是具體的780px; 2.做專案的時候儘可能的把公共的樣式放在css裡面。這樣調整的話,只需要調整css樣式而不是把所有的頁面全部開啟,設定一遍; 3.把電腦設定成一樣的解析度如1280*1024 4.選擇一樣的瀏覽器