【问题标题】:Getting links from a infinite scroll page从无限滚动页面获取链接
【发布时间】: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


【解决方案1】:

链接提取器适用于当前内容,而不是动态呈现的内容。是的,正如您所说,为此,您正在使用 splash 但 splash 用于呈现 JavaScript 代码,而虚拟滚动从未在 splash 中处理,虚拟滚动更像是获取新数据并将其附加到现有 HTML 的网络调用.因此,当您滚动时,找到一个呼叫,然后点击该呼叫以获取所需的数据。

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 2017-08-31
    • 2023-03-08
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多