繁体   English   中英

Python Scrapy Spider:结果不一致

[英]Python Scrapy Spider: Inconsistent results

我很想知道你们对此的想法。 我已经研究了几天,但似乎找不到我要去哪里。 任何帮助将不胜感激。

我想系统地爬网此url:使用分页对其余页面进行爬网的问题站点

我当前的代码:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider, Rule

from acer.items import AcerItem


class AcercrawlerSpider(CrawlSpider):
    name = 'acercrawler'
    allowed_domains = ['studyacer.com']
    start_urls = ['http://www.studyacer.com/latest']

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        questions= Selector(response).xpath('//td[@class="word-break"]/a/@href').extract()

        for question in questions:
            item= AcerItem()
            item['title']= question.xpath('//h1/text()').extract()
            item['body']= Selector(response).xpath('//div[@class="row-fluid"][2]//p/text()').extract()
            yield item

当我运行Spider时,它不会引发任何错误,而是会输出不一致的结果。 有时会刮刮文章页面两次。 我认为这可能与我使用的选择器有关,但我无法进一步缩小选择范围。 请帮忙吗?

凯文 今天早些时候,我遇到了一个类似但略有不同的问题,我的爬网程序正在访问不需要的页面。 有人回答了我的问题,并建议您按照此处的建议检查linkextractor: http ://doc.scrapy.org/en/latest/topics/link-extractors.html

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)

最后,我回顾了我的允许/拒绝组件,以将搜寻器集中于页面的特定子集。 您可以使用正则表达式指定表达链接的相关子字符串,以允许(包括)或拒绝(排除)。 我使用http://www.regexpal.com/测试了这些表达式

我发现这种方法足以防止重复,但是如果您仍然看到它们,我还会发现我当天早些时候正在研究如何防止重复的这篇文章,尽管我不得不说我不必实施此修复程序:

避免重复爬网

https://stackoverflow.com/a/21344753/6582364

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM