Scrapy:努力实现爬网蜘蛛

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy:努力实现爬网蜘蛛相关的知识,希望对你有一定的参考价值。

我一直在尝试实施网络抓取工具以删除标题并指出黑客新闻网站。通过使用正常的scrapy.spider类解析它,我获得了成功。但是,我想使用链接提取器提供一种健壮的方式来搜索链接。这是我当前的设置:

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

class QuotesSpider(CrawlSpider):
    name = "crawl"
    allowed_domains = ['news.ycombinator.com']

    start_urls = [
        'https://news.ycombinator.com/news?p=2',
    ]


    rules = [
    Rule(LinkExtractor(allow=r'news?p=[3-9]'), callback='parse_news', follow=True)
]

    def parse_news(self, response):

        data = {}
        title = response.xpath("//td/a[@class='storylink']/text()").getall()
        point = response.xpath("//td[@class='subtext']/span/text()").getall()
        length = len(title)

        for each in range(length):
            data["title"] = title[each]
            data["point"] = point[each]
            yield data

不过,运行此程序后,我似乎无法将任何信息保存到json中。

答案

您的代码有很多错误,但是对于第一步,您必须修复LinkExtractor:

Rule(LinkExtractor(allow=r'news?p=[3-9]'), callback='parse_news', follow=True)

问号是正则表达式中的特殊字符,因此必须在其前面加上。接下来,您必须在for循环中修复数据提取过程。

以上是关于Scrapy:努力实现爬网蜘蛛的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon Web Services 自动安排 Scrapy Crawler

脚本打印蜘蛛运行的爬网树

Scrapy Spider没有返回所有元素

如何在我的 Scrapy 蜘蛛代码中使用项目加载器?

从脚本scrapy运行蜘蛛

爬虫日记(84):Scrapy的Crawler类