如何使用 Scrapy 爬取网站中的 PDF 和 Office 文档?
Scrapy 是一个强大的网络爬虫框架,它可以帮助我们轻松地爬取网站中的数据,包括文档(如 PDF 和 Office 文档)。本文将介绍如何使用 Scrapy 爬取网站中的 PDF 和 Office 文档。
- 首先,我们需要在 Scrapy 项目中定义一个爬虫。以下是一个简单的示例,该爬虫将从 pidancode.com 网站爬取所有 PDF 和 Office 文档的链接:
import scrapy class DocumentSpider(scrapy.Spider): name = 'document' allowed_domains = ['pidancode.com'] start_urls = ['https://www.pidancode.com/'] def parse(self, response): # 获取所有链接 links = response.css('a::attr(href)').extract() for link in links: # 如果链接指向 PDF 或 Office 文档,则进行处理 if link.endswith('.pdf') or link.endswith('.docx') or link.endswith('.pptx'): yield scrapy.Request(response.urljoin(link), callback=self.save_document) def save_document(self, response): # 保存文档到本地 filename = response.url.split('/')[-1] with open(filename, 'wb') as f: f.write(response.body)
-
在上述示例中,我们定义了一个名为 DocumentSpider 的爬虫,并指定了 pidancode.com 作为爬取的域。我们还指定了爬虫的起始 URL(即 https://www.pidancode.com/)。
-
在 parse 方法中,我们通过 CSS 选择器获取了所有链接,并检查每个链接是否指向 PDF 或 Office 文档(使用 endswith 方法来检查链接是否以 .pdf、.docx 或 .pptx 结尾)。
-
如果链接指向 PDF 或 Office 文档,则我们使用 scrapy.Request 方法创建一个新的请求,并将它传递给保存文档的方法(即 save_document 方法)。
-
在 save_document 方法中,我们将文档保存到本地。我们首先获取文件名(使用 response.url.split('/')[-1] 获取 URL 中的最后一部分),然后将文档保存到本地(使用 with open(filename, 'wb') as f 打开文件并写入 response.body)。
-
最后,在 Scrapy 项目的根目录中运行以下命令来运行此爬虫:scrapy crawl document
这是一个基本的示例,您可以根据您的需求和网站的结构进行更改和定制。
相关文章