如何在 Scrapy 中使用 XPath 进行数据抽取?

2023-04-17 00:00:00 数据 如何在 抽取

使用 XPath 在 Scrapy 中进行数据抽取可以通过 response.xpath() 方法实现。

首先,我们需要在在 Scrapy 中定义一个 Spider,以便从网站中获取需要抽取的数据。假设我们要从 https://pidancode.com/ 网站中抽取文章标题和链接,可以通过如下代码实现:

import scrapy

class PidanSpider(scrapy.Spider):
    name = 'pidan'
    allowed_domains = ['pidancode.com']
    start_urls = ['https://pidancode.com/']

    def parse(self, response):
        # 抽取文章标题和链接
        titles = response.xpath('//h2[@class="post-title"]/a/text()')
        links = response.xpath('//h2[@class="post-title"]/a/@href')
        for title, link in zip(titles, links):
            yield {
                'title': title.extract(),
                'link': link.extract()
            }

在该 Spider 中,我们定义了 start_urls 为需要抽取数据的网站地址,然后在 parse() 方法中使用 response.xpath() 方法,传入 XPath 表达式来抽取数据。

在该例子中,我们使用了两个 XPath 表达式,分别是 '//h2[@class="post-title"]/a/text()' 和 '//h2[@class="post-title"]/a/@href'。前者用来抽取文章标题(文本内容),后者用来抽取文章链接。

最后,我们使用 yield 方法将抽取到的数据返回。在 Scrapy 中,使用 yield 返回的数据会被保存到文件或者数据库中。

可以通过执行 scrapy crawl pidan 命令来运行该 Spider,抽取数据并保存到文件中。

相关文章