首页 > 解决方案 > 如何在 Scrapy URL 请求中启用 JavaScript?

问题描述

我正在尝试使用scrapy https://www.superbancos.gob.pa/es/fin-y-est/reportes-estadisticos?field_ano_rep_est_value=2018从该站点抓取数据

但我得到的响应是以下 html 响应:

您正在被重定向... 需要 Javascript。请先启用 javascript,然后才能看到此页面。

我尝试从 Chrome 浏览器禁用 JavaScript 以查看是否可以获得相同的 Scrapy 响应,但它一直向我显示数据。

我不知道是否需要更改或添加某些内容到我的 settings.py

它可能是请求标头吗?还是代理?

class TestSpider(scrapy.Spider):
    name = "test"        
    def start_requests(self):
        url = 'https://www.superbancos.gob.pa/es/fin-y-est/reportes-estadisticos?field_ano_rep_est_value=2018'
        yield scrapy.Request(url=url, callback=self.parse)
     
    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'report-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)

标签: python-3.xweb-scrapingscrapy

解决方案


使用这些标头和 cookie 并查看差异

cookies = {
    'sucuri_cloudproxy_uuid_3763320b2': 'b0cda35ef63b5b3df4215f2b7902756f',
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'Cache-Control': 'max-age=0',
    'TE': 'Trailers',
}

推荐阅读