gpt4 book ai didi

Scrapy Splash 不会执行 lua 脚本

转载 作者:行者123 更新时间:2023-12-04 22:43:13 28 4
gpt4 key购买 nike

我遇到了 Lua 脚本拒绝执行的问题。从 ScrapyRequest 调用返回的响应似乎是一个 HTML 正文,而我期待一个文档标题。我假设 Lua 脚本永远不会被调用,因为它似乎对响应没有明显影响。我已经通过文档挖掘了很多,似乎无法弄清楚这里缺少什么。有没有人有什么建议?

from urlparse import urljoin

import scrapy
from scrapy_splash import SplashRequest


GOOGLE_BASE_URL = 'https://www.google.com/'
GOOGLE_QUERY_PARAMETERS = '#q={query}'
GOOGLE_SEARCH_URL = urljoin(GOOGLE_BASE_URL, GOOGLE_QUERY_PARAMETERS)

GOOGLE_SEARCH_QUERY = 'example search query'


LUA_SCRIPT = """
function main(splash)
assert(splash:go(splash.args.url))
return splash:evaljs("document.title")
end
"""

SCRAPY_CRAWLER_NAME = 'google_crawler'
SCRAPY_SPLASH_ENDPOINT = 'render.html'
SCRAPY_ARGS = {
'lua_source': LUA_SCRIPT
}


def get_search_url(query):
return GOOGLE_SEARCH_URL.format(query=query)


class GoogleCrawler(scrapy.Spider):
name=SCRAPY_CRAWLER_NAME
search_url = get_search_url(GOOGLE_SEARCH_QUERY)

def start_requests(self):

response = SplashRequest(self.search_url,
self.parse, endpoint=SPLASH_ENDPOINT, args=SCRAPY_ARGS)

yield response


def parse(self, response):
doc_title = response.body_as_unicode()
print doc_title

最佳答案

SplashRequest 的 'endpoint' 参数必须是 'execute' 才能执行 Lua 脚本;在示例中它是“render.html”。

关于Scrapy Splash 不会执行 lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com