Сканирование Scrapy и загрузка определенных типов файлов - PullRequest
0 голосов
/ 12 ноября 2018

Я очень новичок в этом, Моя задача: Позвольте мне сказать, что именно мне нужно, я хочу тщательно найти и загрузить какой-нибудь контракт, который ТИП ЕХ-10.1, ЕХ-10.2 и т. Д., Вплоть до ЕХ -10,99. Контракты доступны в формате .htm и txt. 1. Как скинуть ссылки и скачать. 2. Как отфильтровать типы файлов и скачать. Scrapy хочет пройти по этому пути и скачать, путь: url-> войти в каждую ссылку CIK -> искать и загружать файлы типа EX-10.

Мой код

import urlparse

from scrapy.http import Request
from scrapy.spiders import BaseSpider
class legco(BaseSpider):
name = "sec_gov"

allowed_domains = ["www.sec.gov", "search.usa.gov", "secsearch.sec.gov"]
start_urls = ["https://www.sec.gov/cgi-bin/browse-edgar?company=&match=&CIK=&filenum=&State=&Country=&SIC=2834&owner=exclude&Find=Find+Companies&action=getcompany"]


#extract search results
def parse(self, response): 
for link in response.xpath('//div[@id="seriesDiv"]//table[@class="tableFile2"]/a/@href').extract():
    req = Request(url = link, callback = self.parse_page)
    yield req

def parse(self, response):
base_url = 'http://www.sec.gov/cgi-bin/browse-edgar'
for a in response.xpath('//a[@href]/@href'):
    link = a.extract()
    if link.endswith('.htm'):
        link = urlparse.urljoin(base_url, link)
        yield Request(link, callback = self.save_pdf)

def save_pdf(self, response):
path = response.url.split('/')[-1]
with open(path, 'wb') as f:
    f.write(response.body)

Какие изменения я должен сделать? Может кто-нибудь помочь мне с этим вопросом, пожалуйста. Заранее спасибо.

...