python - 使用 scrapy 查询数据库中的 PDF,然后下载它们
问题描述
我是scrapy和python的新手,所以请记住这一点:)
我正在做一项研究,我需要从政府网站下载大量公开可用的 PDF 文档。问题是搜索结果大约有 11,000 页,每页有 10 个 PDF。
我想做的是使用scrapy编写一个脚本:
1) 将预定义的搜索参数传递给站点上的文档搜索引擎(例如关键字、公司名称、日期、日期等) 2) 运行搜索查询并获得结果 3) 自动下载所有 PDF显示为与我定义的参数匹配到我的机器的查询的结果(不仅仅是结果的第一页)/将它们上传到谷歌驱动器
关于我可以使用的东西的任何指针?我没有找到任何可以做到这一点的东西 - 任何帮助将不胜感激,这是一个非常好的事业!
这是我到目前为止的位置:
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)
解决方案
Scrapy 是完成此类任务的绝佳工具,它可以节省您通过不同的自定义功能的时间,否则您必须使用它的管道,您可以使用您喜欢的库(即 multiprocessing.pool)并行下载文件(pdf) .线程池)
如果您可以分享确切的链接,我可以直接为您提供帮助。
推荐阅读
- r - R - 在符号后获取字符
- spring-boot - 如何使用 vaadin 在 Spring Boot 中更改 Web 上下文?
- makefile - 使用过去一直有效的基本示例生成文件构建模块时出错
- php - PHP MySQL fetch_assoc 在最后打印“0”
- assembly - 6502 带标签的寻址模式
- web-scraping - 亚马逊以编程方式获取产品 ASIN
- ios - iOS 错误代码=-1003 “找不到具有指定主机名的服务器。”
- linux - 移动和删除文件夹中所有匹配 grep 的文件
- python - matplotlib pyqt5画布上两个可拖动点之间的线
- windows - Visual Studio LoadLibrary()“调试断言失败”