【发布时间】:2017-09-23 00:25:45
【问题描述】:
所以我试图从具有无限滚动类型布局的新闻网站上抓取文章,所以会发生以下情况:
example.com有第一页文章
example.com/page/2/有第二页
example.com/page/3/ 有第三页
等等。当您向下滚动时,网址会发生变化。考虑到这一点,我想抓取第一个 x 文章数量并执行以下操作:
start_urls = ['http://example.com/']
for x in range(1,x):
new_url = 'http://www.example.com/page/' + str(x) +'/'
start_urls.append(new_url)
前 9 页似乎工作正常,我得到如下内容:
Redirecting (301) to <GET http://example.com/page/4/> from <GET http://www.example.com/page/4/>
Redirecting (301) to <GET http://example.com/page/5/> from <GET http://www.example.com/page/5/>
Redirecting (301) to <GET http://example.com/page/6/> from <GET http://www.example.com/page/6/>
Redirecting (301) to <GET http://example.com/page/7/> from <GET http://www.example.com/page/7/>
2017-09-08 17:36:23 [scrapy.extensions.logstats] INFO: Crawled 3 pages (at 3 pages/min), scraped 0 items (at 0 items/min)
Redirecting (301) to <GET http://example.com/page/8/> from <GET http://www.example.com/page/8/>
Redirecting (301) to <GET http://example.com/page/9/> from <GET http://www.example.com/page/9/>
Redirecting (301) to <GET http://www.example.com/> from <GET http://www.example.com/page/10/>
Redirecting (301) to <GET http://www.example.com/> from <GET http://www.example.com/page/11/>
Redirecting (301) to <GET http://www.example.com/> from <GET http://www.example.com/page/12/>
Redirecting (301) to <GET http://www.example.com/> from <GET http://www.example.com/page/13/>
从第 10 页开始,它从 example.com/page/10/ 重定向到类似 example.com/ 的页面,而不是原始链接 example.com/page/10。什么可能导致这种行为?
我研究了几个选项,例如 dont_redirect,但我就是不明白发生了什么。这种重定向行为的原因是什么?尤其是当您直接输入网站的链接(如example.com/page/10?)时,不会发生重定向。
任何帮助将不胜感激,谢谢!
[编辑]
class spider(CrawlSpider):
start_urls = ['http://example.com/']
for x in range(startPage,endPage):
new_url = 'http://www.example.com/page/' + str(x) +'/'
start_urls.append(new_url)
custom_settings = {'DEPTH_PRIORITY': 1, 'DEPTH_LIMIT': 1}
rules = (
Rule(LinkExtractor(allow=('some regex here,')deny=('example\.com/page/.*','some other regex',),callback='parse_article'),
)
def parse_article(self, response):
#some parsing work here
yield item
是因为我在LinkExtractor 中包含了example\.com/page/.*?但是,这不应该只适用于不是start_url 的链接吗?
【问题讨论】:
-
您是否因为该页面不存在而被重定向?您要抓取哪个网站?
-
你能发布一个你的实际代码的最小例子吗?
-
@Bricky 我无法发布详细信息,但我已更新问题以包含任何相关内容,谢谢!
标签: python web-scraping scrapy