我对python和scrapy非常陌生。我的任务是为特定主题下载.PDF文件。例如:此网站上还有更多合同** https://www.sec.gov/ **当前,我正在逐个下载文件。我必须编写一个scrapy程序才能使用搜索关键字(例如**关键字:展览10 /展览11 **
)下载所有相关的.PDF文件## My Code ##
#import urllib
import scrapy
from scrapy.http import Request
class pwc_tax(scrapy.Spider):
name = "pwc_tax"
allowed_domains = ["www.sec.gov"]
start_urls = ["https://www.sec.gov/cubist-pharmaceuticals-inc-exhibit-10-65-10-k405"]
def parse(self, response):
base_url = 'https://www.sec.gov/'
for a in response.xpath('//a[@href]/@href'):
link = a.extract()
# self.logger.info(link)
if link.endswith('.pdf'):
#link = urllib.parse.urljoin(base_url, link)
link = base_url + link
self.logger.info(link)
yield Request(link, 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)
使用此不可靠的代码,我只能在给定的URL中下载PDF。 例如:https://www.sec.gov/cubist-pharmaceuticals-inc-exhibit-10-65-10-k405 (如果我在上面的URL中提供了文件,则该文件已在下载,但是为此,我可以手动下载,我必须下载整个PDF,这是搜索项) 如果我使用 Exhibit 10 关键字进行搜索,则以下页面将显示https://secsearch.sec.gov/search?utf8=%3F&affiliate=secsearch&query=exhibit+10,并且我想抓紧打开所有链接并下载所有pdf。如果有人帮助我解决此代码。预先感谢。
答案 0 :(得分:1)
您应该首先获取exec
中的搜索查询URL,然后从start_url的响应中提取所有URL并将请求发送给每个URL。之后,解压缩pdf链接并将其保存到本地存储。
代码看起来像这样
start_urls