【问题标题】:Scrapy crawler to follow links containing keywordsScrapy爬虫跟踪包含关键字的链接
【发布时间】:2019-09-05 00:48:36
【问题描述】:

我有一个运行良好的爬虫网络爬虫。但是,我想让它只跟随包含某个关键字或短语的链接。我以为我已经弄清楚了,但我的输出不正确。

from scrapy.selector import HtmlXPathSelector
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy.utils.url import urljoin_rfc
from webcrawler.items import SitegraphItem


class GraphspiderSpider(CrawlSpider):
    name = "examplespider"
    custom_settings = {
    'DEPTH_LIMIT': '2',
    }
    allowed_domains = []
    start_urls = (
        'http://www.example.com/products/',
    )

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

    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        i = SitegraphItem()
        i['url'] = response.url
        # i['http_status'] = response.status
        llinks=[]
        for anchor in hxs.select('//a[text()="keyword"]/@href'):
            href=anchor.select('@href').extract()[0]
            if not href.lower().startswith("javascript"):
                llinks.append(urljoin_rfc(response.url,href))
        i['linkedurls'] = llinks
        return i

    def _response_downloaded(self, response):
        filename = response.url.split("/")[-1] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)    
        rule = self._rules[response.meta['rule']]
        return self._parse_response(response, rule.callback, rule.cb_kwargs, rule.follow)

我在 hxs.select 段中添加了“关键字”语句,但这显然不正确。我不确定如何让关键字正常工作。

【问题讨论】:

    标签: python scrapy web-crawler output


    【解决方案1】:

    看看你是否可以使用LinkExtractor 属性来实现你的链接过滤逻辑。

    否则,请使用Spider 而不是CrawlSpider。 CrawlSpider 仅对它支持的有限用例有用; Spider 适用于所有用例。

    【讨论】:

    • 我对 Spider 和 CrawlSpider 的区别不是很熟悉。鉴于上面的代码,我可以轻松地将其修改为 Spider 吗?
    • 我相信完成Scrapy tutorial 应该让您对Spider 有足够的了解,是的。
    猜你喜欢
    • 2013-11-30
    • 2021-10-09
    • 2011-06-26
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多