【发布时间】:2018-12-27 21:55:29
【问题描述】:
我正在尝试从无限滚动页面上的LinkExtractor 页面获取链接。使用
rules = (
Rule(LinkExtractor(allow=".*?(\/nl\/agenda\/).*"), callback='parse_item', follow=True),
)
有效。但是,这会在没有 JavaScript 的情况下调用,因此图像不会在页面中加载(以及我需要的它们的 url)。将 LinkExtractor 更改为时;
rules = (
Rule(LinkExtractor(allow=".*?(\/nl\/agenda\/).*"), callback='parse_item', follow=True, process_links='process_links'),
)
与;
def process_links(self, links):
for link in links:
link.url = "http://localhost:8050/render.html?" + urlencode({ 'url' : link.url })
return links
它只会转到加载页面时加载的 url(但它需要获取所有可以通过滚动获得的链接)。出于某种原因,它还加载了一些奇怪的本地主机 URL,像这样;
http://localhost:8050/render.html?url=http%3A%2F%2Flocalhost%3A8050%2Fnl%2Fagenda%2xxxxxx
我不知道为什么会这样。
有没有办法在使用LinkExtractor 和Splash 时执行JavaScript,这样我就可以在LinkExtractor 获取链接之前滚动并获取所有链接?仅在跟踪来自 LinkExtractor 的链接时执行 JavaScript 就足够了,但我不知道从哪里开始。
【问题讨论】:
标签: scrapy scrapy-splash