⑴ python 爬蟲能否採集沒有許可權的頁面內容
如果沒有許可權,建議就不要想著抓取了,那是黑客的事情,互聯網也不是法外之地
⑵ 如何看待wanimal的lofter暫無許可權訪問
寫了一個 Python 爬蟲可以把他的 tumblr 全部作品下載下來GitHub - wydwww/wanimal_tumblr_spider: Download all the pictures from WANIMAL's tumblr (wanimal1983.tumblr.com) by python也請叫我雷鋒
⑶ 關於python爬蟲實現磁碟緩存出現PermissionError的問題
這是系統許可權問題,看看當前用戶在緩存目錄中有沒有寫許可權
⑷ 爬蟲遇到各種不同url怎麼爬取
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。對於垂直搜索來說,聚焦爬蟲,即有針對性地爬取特定主題網頁的爬蟲,更為適合。以下是一個使用java實現的簡單爬蟲核心代碼:publicvoidcrawl()throwsThrowable{while(continueCrawling()){CrawlerUrlurl=getNextUrl();//獲取待爬取隊列中的下一個URLif(url!=null){printCrawlInfo();Stringcontent=getContent(url);//獲取URL的文本信息//聚焦爬蟲只爬取與主題內容相關的網頁,這里採用正則匹配簡單處理if(isContentRelevant(content,this.regexpSearchPattern)){saveContent(url,content);//保存網頁至本地//獲取網頁內容中的鏈接,並放入待爬取隊列中CollectionurlStrings=extractUrls(content,url);addUrlsToUrlQueue(url,urlStrings);}else{System.out.println(url+"isnotrelevantignoring");}//延時防止被對方屏蔽Thread.sleep(this.delayBetweenUrls);}}closeOutputStream();}privateCrawlerUrlgetNextUrl()throwsThrowable{CrawlerUrlnextUrl=null;while((nextUrl==null)&&(!urlQueue.isEmpty())){CrawlerUrlcrawlerUrl=this.urlQueue.remove();//doWeHavePermissionToVisit:是否有許可權訪問該URL,友好的爬蟲會根據網站提供的"Robot.txt"中配置的規則進行爬取//isUrlAlreadyVisited:URL是否訪問過,大型的搜索引擎往往採用BloomFilter進行排重,這里簡單使用HashMap//isDepthAcceptable:是否達到指定的深度上限。爬蟲一般採取廣度優先的方式。一些網站會構建爬蟲陷阱(自動生成一些無效鏈接使爬蟲陷入死循環),採用深度限制加以避免if(doWeHavePermissionToVisit(crawlerUrl)&&(!isUrlAlreadyVisited(crawlerUrl))&&isDepthAcceptable(crawlerUrl)){nextUrl=crawlerUrl;//System.out.println("Nexturltobevisitedis"+nextUrl);}}returnnextUrl;}privateStringgetContent(CrawlerUrlurl)throwsThrowable{//HttpClient4.1的調用與之前的方式不同HttpClientclient=newDefaultHttpClient();HttpGethttpGet=newHttpGet(url.getUrlString());StringBufferstrBuf=newStringBuffer();HttpResponseresponse=client.execute(httpGet);if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){HttpEntityentity=response.getEntity();if(entity!=null){BufferedReaderreader=newBufferedReader(newInputStreamReader(entity.getContent(),"UTF-8"));Stringline=null;if(entity.getContentLength()>0){strBuf=newStringBuffer((int)entity.getContentLength());while((line=reader.readLine())!=null){strBuf.append(line);}}}if(entity!=null){nsumeContent();}}//將url標記為已訪問markUrlAsVisited(url);returnstrBuf.toString();}(Stringcontent,PatternregexpPattern){booleanretValue=false;if(content!=null){//是否符合正則表達式的條件Matcherm=regexpPattern.matcher(content.toLowerCase());retValue=m.find();}returnretValue;}publicListextractUrls(Stringtext,CrawlerUrlcrawlerUrl){MapurlMap=newHashMap();extractHttpUrls(urlMap,text);extractRelativeUrls(urlMap,text,crawlerUrl);returnnewArrayList(urlMap.keySet());}privatevoidextractHttpUrls(MapurlMap,Stringtext){Matcherm=(text);while(m.find()){Stringurl=m.group();String[]terms=url.split("ahref=\"");for(Stringterm:terms){//System.out.println("Term="+term);if(term.startsWith("http")){intindex=term.indexOf("\"");if(index>0){term=term.substring(0,index);}urlMap.put(term,term);System.out.println("Hyperlink:"+term);}}}}(MapurlMap,Stringtext,CrawlerUrlcrawlerUrl){Matcherm=relativeRegexp.matcher(text);URLtextURL=crawlerUrl.getURL();Stringhost=textURL.getHost();while(m.find()){Stringurl=m.group();String[]terms=url.split("ahref=\"");for(Stringterm:terms){if(term.startsWith("/")){intindex=term.indexOf("\"");if(index>0){term=term.substring(0,index);}Strings=//"+host+term;urlMap.put(s,s);System.out.println("Relativeurl:"+s);}}}}publicstaticvoidmain(String[]args){try{Stringurl="";QueueurlQueue=newLinkedList();Stringregexp="java";urlQueue.add(newCrawlerUrl(url,0));NaiveCrawlercrawler=newNaiveCrawler(urlQueue,100,5,1000L,regexp);//booleanallowCrawl=crawler.areWeAllowedToVisit(url);//System.out.println("Allowedtocrawl:"+url+""+//allowCrawl);crawler.crawl();}catch(Throwablet){System.out.println(t.toString());t.printStackTrace();}}
⑸ python中的爬蟲如何去爬那些被設置了許可權的網站
一般的辦法就是去獲取這個許可權
模擬登錄,更換賬號,更換ip
怎麼反的,就怎麼去繞過
多數需要花時間來分析
摸索出反爬蟲的策略,採取辦法對應
⑹ 訪問被拒絕爬蟲發起抓取,httpcode返回碼是403
自己寫的爬蟲不必理會robots.txt.
檢查你的 curl 里的user agent。
一些server 會檢查合格的user agent.
⑺ 用Java寫了一個p站的爬蟲,但是出現拒絕訪問403怎麼破
可能是爬蟲被發現了,p站認出你是爬蟲,你應該從反爬蟲的角度修改爬蟲。又或者爬蟲抓到的鏈接本就是伺服器拒絕訪問的(也可以理解為沒有許可權,也許需要登錄)
⑻ linux上運行一個爬蟲程序,爬取自己網站的jsp頁面!windows上運行正常,linux上運行無法連接,403!
403 Forbidden 是沒有許可權的錯誤吧
⑼ 現在的爬蟲能爬出加了許可權的內容嗎
你所謂的加許可權是指哪種類型
用戶組許可權?那得需要一個特定組的用戶然後模擬登錄再爬取
網站驗證?那得抓包分析下是請求頭或者請求數據
重定向驗證伺服器驗證?需要爬蟲集成自動化測試來渲染js
⑽ 如何禁止別人爬蟲小程序代碼
Robots.txt-禁止爬蟲
robots.txt用於禁止網路爬蟲訪問網站指定目錄。robots.txt的格式採用面向行的語法:空行、注釋行(以#打頭)、規則行。規則行的格式為:Field:value。常見的規則行:User-Agent、Disallow、Allow行。
User-Agent行
User-Agent:robot-name
User-Agent:*
Disallow和Allow行
Disallow:/path
Disallow:#空字元串,起通配符效果,全禁止
Allow:/path
Allow:#空字元串,起通配符效果,全允許
搜索引擎的User-Agent對應名稱
搜索引擎
User-Agent值
Googlegooglebot
網路spider
雅虎slurp
MSNmsnbot
Alexais_archiver
我在Linux上抓包觀察到的一些搜索引擎訪問記錄:
#tcpmp-n-nn-A-l-s1024'tcpport80'|grepUser-Agent
User-Agent:Mozilla/5.0(compatible;Googlebot/2.1;+http://www.google.com/bot.html)
User-Agent:Googlebot-Image/1.0
User-Agent:Feedfetcher-Google;(+http://www.google.com/feedfetcher.html;5subscribers;feed-id=4619555564728728616)
User-Agent:Mozilla/5.0(compatible;Sosospider/2.0;+http://help.soso.com/webspider.htm)
User-Agent:Mozilla/5.0(compatible;YouBot/1.0;http://www.you.com/help/webmaster/spider/;)
User-Agent:Mozilla/5.0(compatible;JikeSpider;+http://shoulu.jike.com/spider.html)
JikeSpider是即刻搜索(人民搜索)。
robots.txt的補充
如果你沒有對網站根目錄的寫入許可權(無法建立robots.txt文件),或你想要某個指定的網頁不被搜索引擎收錄,可以使用元標簽阻止爬蟲訪問:
<metaname="robots"content="noindex"><!--阻止所有爬蟲-->
<metaname="googlerobot"content="noindex"><!--阻止Google收錄-->
robots元標記的默認值為"index,follow",它的取值可以是(來自Google站長幫助):
noindex防止網頁被編入索引。nofollow防止googlebot從此頁面中跟蹤鏈接。noarchive防止Google顯示網頁的快照鏈接。noimageindex不被Google圖片搜索索引。
現實中的robots.txt
淘寶屏蔽網路
淘寶屏蔽了網路抓取(2008年9月),http://www.taobao.com/robots.txt的內容:
User-agent:Baispider
Disallow:/
User-agent:spider
Disallow:/
網路與360的搜索引擎之爭
2012年8月,360推出搜索引擎,並與網路發生正面沖突。網路工程師跑出來說360違反robots協議,偷竊網路內容。以網路知道為例,http://..com/robots.txt的內容大致是這樣:
User-agent:Baispider
Disallow:/w?
Allow:/
User-agent:Googlebot
User-agent:MSNBot
User-agent:Baispider-image
User-agent:YouBot
User-agent:Sogouwebspider
User-agent:Sogouinstspider
User-agent:Sogouspider2
User-agent:Sogoublog
User-agent:SogouNewsSpider
User-agent:SogouOrionspider
User-agent:JikeSpider
User-agent:Sosospider
Allow:/
User-agent:*
Disallow:/
也就是說對360爬蟲而言,應該走最後一條規則,也就是禁止抓取網路知道所有內容。但從360搜索看,有網路知道的內容。