【问题标题】:Is there a way to make Scrapy not retrive loading screens?有没有办法让 Scrapy 不检索加载屏幕?
【发布时间】:2020-09-30 15:08:57
【问题描述】:

我一直在关注一个教程并尝试使用许多不同的库,但我遇到了同样的问题,Scrapy 返回加载屏幕而不是此处看到的实际内容:

</div>
<div style="margin-top: 20px; color: #FFFFFF; font-size: 14px; text-transform: uppercase; letter-spacing: 2px; font-family: sans-serif;">
Loading...
</div>
</div>

另外,这是我的python代码:

import scrapy

class RacerSpider(scrapy.Spider):
    name = 'racer'
    start_urls = ['https://nitrotype.com/racer/test']

    def parse(self, response):
        name = response.url.split('/')[-1]
        filename = f'Racer-{name}.html'

        with open(filename, 'wb') as f:
            f.write(response.body)
            f.close()

此代码用于在名为 Nitrotype 的游戏中抓取有关 racer 的数据

【问题讨论】:

  • 请更正您的链接,以便重现您的问题
  • 完成,我更新了链接!

标签: python-3.x web-scraping scrapy repl.it


【解决方案1】:

看起来您正在使用动态网站。

动态网站通常会发送带有“正在加载”的主文档,然后使用某种 JavaScript 填充内容。

您的链接不起作用,所以我无法重现您的确切问题,但我有两件事要给您:

  1. 使用scrapy shell 命令并为其提供网址。获得 shell 后,运行 view(response) 以查看 scrapy 得到了什么。比如:

    scrapy shell "https://google.com" view(response) #从上面命令加载的shell中

  2. F12 打开开发者工具,转到网络选项卡并查看所有请求和响应。点击这些查看您的数据在哪里。

完成此操作后,如果您认为仍需要渲染某些内容,请使用 Splash 或 Selenium。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    相关资源
    最近更新 更多