Scrapy spider没有收集第一页数据,每页上的第一项也可能不正确

时间:2017-05-27 23:01:38

标签: python scrapy-spider

这个蜘蛛从Funny subreddit页面中删除了标题。 我认为问题可能在于允许的URL,因为/ funny主页与那个不匹配。如果我将'/ r / funny /'添加到允许的列表中,它将会疯狂并且爬行太多。此外,不确定每个页面的第一个项目是错误的(有时可能是上一页的最后一项。

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.http.response import Response

class Lesson1Spider(CrawlSpider):
    name = 'lesson1'
    allowed_domains = ['www.reddit.com']
    start_urls = ['http://www.reddit.com/r/funny/']

    rules = [
        Rule(LinkExtractor(
            allow=['/r/funny/\?count=\d*&after=\w*',]),
            callback='parse_item',
            follow=True ),
    ]

    def parse_item (self, response):
        print(response.xpath('//p[@class="title"]/a/text()').extract())

2 个答案:

答案 0 :(得分:0)

对于问题的第一部分,您的规则似乎与您的起始网址相矛盾。第一页 - http://www.reddit.com/r/funny/ - 没有/r/funny/\?count=\d*&after=\w*,因此可能会跳过它。使用每页底部的上一个/下一个按钮指定下一页可能会给您带来更好的结果。

至于第二部分,可能是你在刮擦和检查之间的reddit上的排名发生了变化,或者源代码中有什么东西(任何其他p元素都有类标题?)你没有考虑到。

答案 1 :(得分:0)

我能找到的最佳解决方案是在同一个文件中运行两个独立的蜘蛛。一个用于第一页,一个用于第2页。这可能不是最有效的代码,但是新的,我很满意所有组件的工作。任何关于清理它的建议都会受到欢迎。

$(this)