【问题标题】:How do I web scrape this link and iterate through the page numbers?我如何网络抓取此链接并遍历页码?
【发布时间】:2022-06-13 02:24:56
【问题描述】:

我的目标是网络抓取此 url 链接并遍历页面。我不断收到一个奇怪的错误。我的代码和错误如下:

import requests
import json
import pandas as pd

url = 'https://www.acehardware.com/api/commerce/storefront/locationUsageTypes/SP/locations?page='

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0',
}


#create a url list to scrape data from all pages
url_list = []

for i in range(0, 4375):
  url_list.append(url + str(i))

response = requests.get(url, headers=headers)
data = response.json()

d = json.dumps(data)
df = pd.json_normalize(d)

错误:

{'items': [{'applicationName': 'ReverseProxy', 'errorCode': 'UNAUTHORIZED', 'message': 'You are Unauthorized to perform the attempted operation. Application access token required', 'additionalErrorData': [{'name': 'OperationName', 'value': 'http://www.acehardware.com/api/commerce/storefront/locationUsageTypes/SP/locations?page=0&page=1'}]}], 'exceptionDetail': {'type': 'Mozu.Core.Exceptions.VaeUnAuthorizedException'}

这对我来说很奇怪,因为我应该能够访问此 url 上的每个页面

具体来说,因为我可以按照链接复制并粘贴 json 数据。有没有办法在没有 api 密钥的情况下抓取这个网站?

【问题讨论】:

  • 您好,因为您未经授权。 You are Unauthorized to perform the attempted operation. http://www.acehardware.com/api/commerce/storefront/locationUsageTypes/SP/locations?page=0 Application access token required
  • 请参考此链接可能会有所帮助stackoverflow.com/a/48427689/13888486

标签: python web-scraping python-requests


【解决方案1】:

它可以在您的浏览器中使用,因为您在 本地存储 中保存了 cookie 令牌
一旦您删除所有 cookie,当您尝试直接导航到 API 链接时,它就不起作用了。
令牌 cookie 是 sb-sf-at-prod-s。将此 cookie 添加到您的 标题 中,它就会起作用。
我不知道这个 cookie 的 是否链接到我的 IP 地址。但如果是这样,它对你不起作用。只需在您的浏览器中将此 cookie 的值更改为 1。
此 cookie 可能仅对某些请求或一段时间有效。
我建议您在每个请求之间放置一些 睡眠
这个网站有security antibot Akamai.

import requests
import json

url = 'https://www.acehardware.com/api/commerce/storefront/locationUsageTypes/SP/locations?page='
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0',
    'cookie': 'sb-sf-at-prod=at=%2FVzynTSsuVJGJMAd8%2BjAO67EUtyn1fIEaqKmCi923rynHnztv6rQZH%2F5LMa7pmMBRiW00x2L%2B%2FLfmJhJKLpNMoK9OFJi069WHbzphl%2BZFM%2FpBV%2BdqmhCL%2FtylU11GQYQ8y7qavW4MWS4xJzWdmKV%2F01iJ0RkwynJLgcXmCzcde2oqgxa%2FAYWa0hN0xuYBMFlCoHJab1z3CU%2F01FJlsBDzXmJwb63zAJGVj4PIH5LvlcbnbOhbouQBKxCrMyrmpvxDf70U3nTl9qxF9qgOyTBZnvMBk1juoK8wL1K3rYp51nBC0O%2Bthd94wzQ9Vkolk%2B4y8qapFaaxRtfZiBqhAAtMg%3D%3D'
}
#create a url list to scrape data from all pages
url_list = []
for i in range(0, 4375):
    url_list.append(url + str(i))
response = requests.get(url, headers=headers)
data = response.json()
d = json.dumps(data)
print(d)

希望我能帮到你。

【讨论】:

  • 这太不可思议了。您是如何找到反机器人的?
  • 所以它确实适用于上述令牌,但您是如何在开发人员选项卡下找到的?
  • 为 chrome Wappalyzer 安装插件,它将向您展示拥有该网站的所有技术。是的,在浏览器上单击 F12 -> 应用程序 -> Cookies。见官方文档developer.chrome.com/docs/devtools/storage/cookies
猜你喜欢
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2020-08-08
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多