郁闷啊,php抓取页面老是无法获取结不美观仿佛是被301重定向了,怎么解决啊?

2024-05-02 08:53

1. 郁闷啊,php抓取页面老是无法获取结不美观仿佛是被301重定向了,怎么解决啊?

<?php$url=' http://www.bamuyu.com/news/zixun/list_7_2.html';$content=curl_file_get_contents($url);echo $content;function curl_file_get_contents($durl){ $cookie_file = dirname(__FILE__)."/cookie.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $durl); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $r = curl_exec($ch); curl_close($ch); return $r; }

郁闷啊,php抓取页面老是无法获取结不美观仿佛是被301重定向了,怎么解决啊?

2. 我的网站设置301重定向之后后,百度居然还是更新我重定向的页面,这是怎么回事?还是抓取页面

朋友现在只有淡定,百度也推荐做301的,但关键问题是百度对301反应异常麻木,连百度《搜索引擎指南2.0》中都承认百度对301的识别比较迟缓,据ZAC所做实验,甚至一年以后百度都还无法正确识别301的。面对这样的情况,朋友也只有继续坚持下去,每日规律性打点网站,没有别的办法了的。

3. php 抓取数据怎么避免重定向

具体代码如下:
<?php  
$ch = curl_init();  
$timeout = 5;  
curl_setopt ($ch, CURLOPT_URL, '');  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$file_contents = curl_exec($ch);  
curl_close($ch);  
echo $file_contents;  
?>  
​PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

php 抓取数据怎么避免重定向

4. scrapy 执行爬虫报错:exceptions.KeyError:‘d’,怎么解决

1、爬数据的时候,有时会遇到被该网站封IP等情况,response的状态码为403,那么这时候我们希望能够抛出
CloseSpider的异常。
2、但是如scrapy官网提到的,Scrapy默认的设置是过滤掉有问题的HTTP response(即response状态码不在200-300之间)。因此403的情况会被ignore掉,意思就是我们不是处理这个url 请求的response,直接就忽略,也就是及时我们用response.status == 400判断没有作用,因为只有status处于200-300的请求才会被处理。
3. 如果我们想捕获或者处理403,或者其它如404或者500,这种请求时,我们在spider的类中把403放在handle_httpstatus_list中。如下就行。
class MySpider(CrawlSpider):
handle_httpstatus_list = [403]
或者将403放在HTTPERROR_ALLOWED_CODES设置中
即在settings中增加HTTPERROR_ALLOWED_CODES = [403], HTTPERROR_ALLOWED_CODES默认是[]
http:// doc. scrapy.org/en/1.0/topics/spider-middleware. html#httperror-allowed-codes
4. 设置完handle_httpstatus_list或者HTTPERROR_ALLOWED_CODES之后,就可以通过判断response.status == 403抛出CloseSpider异常,结束抓取。

5. scrapy爬取拼多多app的详情的时候了,会自动跳转到拼多多的首页,无法获取详情的内容,求帮助。

scrapy用的不多,这种问题我建议你还是贴出代码,看有没有高手把您解答吧。

scrapy爬取拼多多app的详情的时候了,会自动跳转到拼多多的首页,无法获取详情的内容,求帮助。

6. 如何在scrapy框架下,用python实现爬虫自动跳转页面来抓去网页内容??

Scrapy是一个用Python写的Crawler Framework,简单轻巧,并且非常方便。Scrapy使用Twisted这个异步网络库来处理网络通信,架构清晰,并且包含了各种中间件接口,可以灵活地完成各种需求。Scrapy整体架构如下图所示:

根据架构图介绍一下Scrapy中的各大组件及其功能:

Scrapy引擎(Engine):负责控制数据流在系统的所有组建中流动,并在相应动作发生触发事件。
调度器(Scheduler):从引擎接收Request并将它们入队,以便之后引擎请求request时提供给引擎。
下载器(Downloader):负责获取页面数据并提供给引擎,而后提供给Spider。
Spider:Scrapy用户编写用于分析Response并提取Item(即获取到的Item)或额外跟进的URL的类。每个Spider负责处理一个特定(或一些网站)。
Item Pipeline:负责处理被Spider提取出来的Item。典型的处理有清理验证及持久化(例如存储到数据库中,这部分后面会介绍存储到MySQL中,其他的数据库类似)。
下载器中间件(Downloader middlewares):是在引擎即下载器之间的特定钩子(special hook),处理Downloader传递给引擎的Response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能(后面会介绍配置一些中间并激活,用以应对反爬虫)。
Spider中间件(Spider middlewares):是在引擎及Spider之间的特定钩子(special hook),处理Spider的输入(response)和输出(Items即Requests)。其提供了一个简便的机制,通过插入自定义的代码来扩展Scrapy功能。

7. scrapy为什么允许重定向采集的网页都是空的

因为定向到呢超时页面去是防御机制

scrapy为什么允许重定向采集的网页都是空的

8. 如何在scrapy框架下,用python实现爬虫自动跳转页面来抓去网页内容

(1)一种是像我之前爬虫新京报网的新闻,下一页的url可以通过审查元素获得,第一页的网址是http://www.bjnews.com.cn/news/list-43-page-1.html
在第一页的时候,下一页按钮的审查元素是


我们通过获取next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]
,便可以得到下一页的url,next_page = "http://www.bjnews.com.cn" + next_pages,

这一部分的完整代码为:

page_link=set() #保存下一页页面url

content_link=set() #保存页面内所有可获得的url

rules={'page':LinkExtractor(allow=(r'^http://www.bjnews.com.cn/\w+/2016/\d{2}/\d{2}/\d{6}.html
))}

start_urls={'http://www.bjnews.com.cn/news/list-43-page-1.html'}

def parse(self, response):

#爬取一个页面内的所有url链接

    for link in self.rules['page'].extract_links(response):

        if link.url not in self.content_link:

            self.page_link.add(link.url)

            yield scrapy.Request(link.url, callback=self.parse_item)

#自动获取下一页的url

    next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]

    if next_pages:

        next_page = "http://www.bjnews.com.cn" + next_pages

        self.page_link.add(next_page)

        yield scrapy.Request(next_page, callback=self.parse)


(2)第二种情况,就是在下一页的审查元素中没有提供url链接,需要自己分析,在这里依然举个例子,比如搜狐新闻http://news.sohu.com/guojixinwen.shtml,该页中下一页按钮的审查元素是:




我们不能通过href来直接过得下一页的url,需要自己手动获得,那现在我们来分析

第二页的url:http://news.sohu.com/guojixinwen_5230.shtml,第三页的http://news.sohu.com/guojixinwen_5229.shtml,最后一页的http://news.sohu.com/guojixinwen_5132.shtml,由此可以分析出这一共100页的url,是http://news.sohu.com/guoneixinwen_"+i+".shtml",其中i是从5230到5132倒序排列的,也就是说通过for循环,就可以获得这100页的所有url,完整代码如下:在这里给大家加一个新的方法的使用start_request,该方法就是子定义start_urls,把所有自定义的url放到page_link中,self.make_requests_from_url方法会自动获取里面的请求