Недостатки в коде:
http://www.pwc.com/us/en/tax-services/publications/research-and-insights.html этот URL перенаправляет на https://www.pwc.com/us/en/services/tax/library.html
Также нет div с идентификатором all_results , поэтомув ответе html, возвращенном сканеру, отсутствует div # all_results.Таким образом, первая строка кода в методе разбора должна генерировать ошибку.
Чтобы команда scrapy crawl работала, вы должны находиться в каталоге, где находится файл конфигурации scrapy.cfg .
Редактировать : Надеюсь, этот код поможет вам.Он загружает все файлы PDF по указанной ссылке.
Код :
#import urllib ---> Comment this line
import scrapy
from scrapy.http import Request
class pwc_tax(scrapy.Spider):
name = "pwc_tax"
allowed_domains = ["www.pwc.com"]
start_urls = ["https://www.pwc.com/us/en/services/consulting/analytics/benchmarking-services.html"]
def parse(self, response):
base_url = 'https://www.pwc.com'
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) -> Comment this
link = base_url + link --> Add this line
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)
Хранилище кода можно найти по адресу: https://github.com/NilanshBansal/File_download_Scrapy