使用scrapy在数据库中查询PDF然后下载它们



我是Scrapy和python的新手,所以请记住这一点:)

我正在做一项研究,我需要从政府网站下载大量公开可用的PDF文档。问题是大约有 11,000 页搜索结果,每个都有 10 个 PDF。

我想做的是使用scrapy编写一个脚本:

1( 将预定义的搜索参数传递给网站网站上的文档搜索引擎(例如关键字、公司名称、开始日期、日期到等( 2( 运行搜索查询并获取结果 3( 自动将查询结果显示的所有 PDF(不仅仅是结果的第一页(与我定义的参数下载到我的机器/将它们上传到 Google 云端硬盘

关于我可以使用的东西的任何指示?我没有找到任何可以做到这一点的东西 - 任何帮助将不胜感激,这是一个非常好的事业!

这就是我目前所处的位置:

import scrapy
from scrapy.http import Request

class fos(scrapy.Spider):
name = "XXX"

allowed_domains = ["XXX"]
start_urls = ["XXX"]

def parse(self, response):
for href in response.css('div#all_results h3 a::attr(href)').extract():
yield Request(
url=response.urljoin(href),
callback=self.parse_article
)
def parse_article(self, response):
for href in response.css('div.download_wrapper a[href$=".pdf"]::attr(href)').extract():
yield Request(
url=response.urljoin(href),
callback=self.save_pdf
)
def save_pdf(self, response):
path = response.url.split('/')[-1]
self.logger.info('Saving PDF %s', path)
with open(path, 'wb') as f:
f.write(response.body)

除了python和scrapy之外,我建议对这么多页面使用线程。 这是文档和一个很好的教程。

Scrapy 是完成此类任务的绝佳工具,它节省了通过不同的自定义函数的时间,否则您必须执行并使用它的管道,您可以使用您喜欢的库并行下载文件 (pdf((即multiprocessing.pool.ThreadPool(

如果您可以分享确切的链接,也许我可以直接为您提供帮助。

最新更新