javascript - 在 Python 中抓取动态内容

标签 javascript python scrapy

我是 Python Scrapy 模块的新手。我正在尝试在 https://munchado.com/search?sst=a&fb=m&vt=s&svt=l&in=New%20York%2C%20NY%2C%20USA&at=c&lat=40.7127&lng=-74.0059&p=0&srb=r&srt=d&sq=american&sdt=ft&ovt=restaurant&d=0&st=d 上抓取餐厅的信息

虽然我在其他网页上抓取过一些成功的经验,但这个真的很麻烦。 似乎当您发出搜索请求时,餐馆的信息会自动加载。我的意思是信息没有写在网页的源代码中,并且可能来自公司的内部服务器或其他东西。目录随时间变化。例如,如果您在晚上搜索,某些目录的名称会从“div class='t-has-deals'”更改为“div class='t-closed-now'”。

所以我的问题是:是否仍然可以从此类网页中抓取信息。如果这件事属于抓取动态内容,有没有通用的方法来解决这个问题?非常感谢。

最佳答案

在处理动态网站时,抓取数据比正常方式更难。但首先我们确定了数据是如何在页面中动态呈现的。 数据可能以下列方式呈现:

  1. 来自包含数据的 javascript 文件。
  2. 来自 ajax 响应。
  3. 来自 websocket 响应。在这种情况下,我们必须先发送一个 给服务器的相关消息给我们一个可能的响应 包含数据。
  4. 来自 API 响应。

    方法会比我提到的更多。 在您的情况下,数据是从这个 api_request_url 获得的. 下图显示了我们在请求 api_request_url 时需要提供的 form_data

    formdata

这给你一个 json_response 显示在下面

json_response

其中包含您需要的数据。 如果您更改 form_data 中的参数,您将获得相应的数据。

关于javascript - 在 Python 中抓取动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114273/

相关文章:

python - 如果只能获取完整的用户列表,则从 REST GET 读取单个用户条目

javascript - Scrapy 中的 Selenium + PhantomJS

python - Scrapy Python For 语句

javascript - 这个片段中的这个是什么?

javascript - 无法在 AngularJS 中实例化模块

javascript - 将 javascript 代码转换为 android 代码 - 如何在 POST 请求中添加引荐来源网址?

python - numpy 数组中的几个元素

python - 如何在 python 中动态命名我的变量类

python - 网站强制 scrapy 重定向

javascript - 用双引号替换 JSON 对象值单引号