Web scraping Scrapy Splash中的Javascript呈现问题

Web scraping Scrapy Splash中的Javascript呈现问题,web-scraping,scrapy,scrapy-splash,splash-js-render,Web Scraping,Scrapy,Scrapy Splash,Splash Js Render,我在探索Scrapy+Splash时遇到了一个问题,即SplashRequest没有呈现javascript,并且给出了完全相同的响应Scrapy.Request。 我想刮的网页是。我想从我的课程项目网页的一些字段 即使在等待“wait”:“30”之后,我也无法在呈现js后获得最终的HTML。事实上,结果与scrapy.Request相同。同样的代码适用于我尝试过的另一个网站ie。所以我相信设置是好的 这是蜘蛛的定义 import scrapy from .. import IndeedItem

我在探索Scrapy+Splash时遇到了一个问题,即
SplashRequest
没有呈现javascript,并且给出了完全相同的响应
Scrapy.Request
。 我想刮的网页是。我想从我的课程项目网页的一些字段

即使在等待
“wait”:“30”
之后,我也无法在呈现js后获得最终的HTML。事实上,结果与
scrapy.Request
相同。同样的代码适用于我尝试过的另一个网站ie。所以我相信设置是好的

这是蜘蛛的定义

import scrapy
from .. import IndeedItem
import scrapy
from scrapy_splash import SplashRequest
from bs4 import BeautifulSoup

class IndeedSpider(scrapy.Spider):
    name = "indeed"
    def __init__(self):
        self.headers = {"Host": "www.naukri.com",
            "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0"}

    def start_requests(self):              

        yield SplashRequest(
            url = "https://www.naukri.com/job-listings-Sr-Python-Developer-Rackspace-Gurgaon-4-to-9-years-270819005015",
            endpoint='render.html', headers = self.headers,
            args={
                    'wait': 3,
                }
            )

    def parse(self, response):
        soup = BeautifulSoup(response.body)
        it = IndeedItem()
        it['job_title'] = soup
        yield it
settings.py(仅相关零件)文件为

输出文件是


我不知道该如何处理输出,它在其中嵌入了JavaScript。在浏览器中打开它表明渲染的内容很少(仅标题)。如何获取网站的呈现HTML?非常感谢您的帮助。

您是否尝试过直接使用Splash,而不是通过scrapy Splash?它是否按预期呈现网站?是的@Gallaecio,我有。直接从Splash运行它会给我一个验证码,当我运行Scrapy Splash而不使用
用户代理时也是如此。将用户代理添加到SplashRequest会得到上述问题中的输出。我假设添加
User Agent
有助于绕过验证码。您是否尝试过直接使用Splash,而不是通过scrapy Splash?它是否按预期呈现网站?是的@Gallaecio,我有。直接从Splash运行它会给我一个验证码,当我运行Scrapy Splash而不使用
用户代理时也是如此。将用户代理添加到SplashRequest会得到上述问题中的输出。我假设添加
用户代理
有助于绕过验证码。
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}

DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810
}


SPLASH_URL = 'http://localhost:8050/'