【问题标题】:Getting blocked from crawling data from website in python被阻止从python中的网站抓取数据
【发布时间】:2020-07-28 13:34:07
【问题描述】:

我是网络抓取和构建爬虫的新手,我开始在杂货网站上练习。

我已经尝试从网站抓取数据很长一段时间了,但无法通过超过三页,对于前三页,网站让我访问数据,但之后我没有得到任何响应甚至几秒钟我也停止在浏览器上得到响应。该网站使用 API 来获取所有数据,所以我什至不能使用 BeautifulSoup,我想使用 selenium,但也没有运气。 我正在使用 python 的 requests 库来获取要解析的数据和 json。该网站需要 post 方法来访问所有产品,因此我也发送 cookie、标题和参数,并在下一页也使用相同的 cookie 等。

如果有人遇到同样的情况并可能找到解决方法,我正在寻找一些一般性的回应。

谢谢。

【问题讨论】:

  • 使用用户代理
  • 在 Stack Overflow 上,我们回答有关编程的具体问题。要求一般建议的问题通常被认为太不清楚或太宽泛。
  • @JoshuaVarghese 我尝试过使用多个 user-agent 但仍然存在同样的问题
  • 给我们链接
  • 链接是:kroger.com/pl/fresh-fruits-vegetables/06我想从所有页面获取数据,我只成功了前几个

标签: python web-scraping python-requests web-crawler data-science


【解决方案1】:

您可以通过以下方式取消阻止该网站。 (抱歉,无法提供代码,因为没有我的位置详细信息可能无法运行。所以尝试我说的方法获取代码)。

  1. 在 Google Chrome 中打开该链接 > 按 Ctrl + Shift + I 打开开发者工具 > 转到网络选项卡。在那里,去 XMR 并找到“详细信息”。这看起来像:

  1. 右键单击它,将其复制为 Bash Curl。
  2. 转到Curl to Requests,粘贴代码,然后按Enter。 curl 被转换为请求。复制并运行。
  3. 在这里,最后一行将是:
response = requests.post('https://www.kroger.com/products/api/products/details', headers=headers, cookies=cookies, data=data)

这会处理请求。 4. 在这之后,当我们提取我们需要的东西时:

data = response.json() # saving as a dictionary

product = data['products'] # getting the product
  1. 现在从这些抓取的数据中获取您需要的任何内容。快乐编码:)

【讨论】:

  • 您好,感谢您解决所有麻烦,但正如我所说,我能够获得所有数据,但仅限于前三页,这仅提供数据参数中给出的 24 种产品的详细信息但要获取数据值,我必须先运行搜索 api 并提取“upcs”值,然后将它们传递给数据变量。正如我之前尝试过所有这些并且它有效但仅适用于前几页而不适用于其余页面,所以我想知道是否有一个技巧可以绕过整个情况并获得所有产品。如果您对此有任何解决方案,欢迎分享:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多