⑴ 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搜索看,有网络知道的内容。