下载有关深度主题的所有相关.PDF文件

时间:2018-10-31 06:09:47

标签: python web-scraping scrapy web-crawler scrapy-spider

我对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。如果有人帮助我解决此代码。预先感谢。

1 个答案:

答案 0 :(得分:1)

您应该首先获取exec中的搜索查询URL,然后从start_url的响应中提取所有URL并将请求发送给每个URL。之后,解压缩pdf链接并将其保存到本地存储。

代码看起来像这样

start_urls