解析亚马逊产品时出现的问题

Problems with parsing products from amazon

提问人:Timur 提问时间:9/12/2023 最后编辑:Timur 更新时间:9/13/2023 访问量:45

问:

我想解析亚马逊产品,但我得到了这个回溯。我不明白为什么会这样。我认为这可能是因为该网站不希望我这样做。

回溯(最近一次调用最后一次):

文件“c:\Users\grafity\Desktop\main.py”,第 42 行,在

main()

文件“c:\Users\grafity\Desktop\main.py”,第 31 行,主

products = get_products(search_url)

           ^^^^^^^^^^^^^^^^^^^^^^^^

文件“c:\Users\grafity\Desktop\main.py”,第 14 行,在get_products中

response.raise_for_status()

文件“C:\Users\grafity\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\models.py”,第 1021 行,raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError:503 服务器错误:服务不适用于 url:https://www.amazon.ca/s?k=RTX+3070ti

编辑:我花了一些时间,以某种方式使它工作,但它非常不一致。有时它可以很好地解析卡片,有时值是 Null 的一半,通常所有值都是 Null。我怎样才能使 ,y 程序更加一致和安心。下面是一些示例输出:

{“img”: null, “name”: null, “price”: null, “url”: null}, {“img”: “https://m.media-amazon.com/images/I/71vWKkde2yL.AC_UY218.jpg“, ”name“: null, ”price“: null, ”url“: ”/sspa/click?“ ie=UTF8&spc=MToyNjUzMzM1MzIwODAzNjE5OjE2OTQ1MzczOTE6c3BfYXRmOjMwMDAwMTUzMzIyNDgwMjo6MDo6&url=%2FPNY-GeForce-Uprising-Triple-Graphics%2Fdp%2FB0C1HVL3BD%2Fref%3Dsr_1_1_sspa%3Fkeywords%3DRTX%2B3070ti%26qid%3D1694537391%26sr%3D8-1-spons%26sp_csd%3Dd2lkZ2V0TmFtZT1zcF9hdGY%26psc%3D1”}, {“img”: “https://m.media-amazon.com/images/I/81d0pk3xOiS.AC_UY218.jpg“, ”name“: null, ”price“: 843.0, ”url“: ”/MSI-Gaming-RTX-3070-Trio/dp/B096HJC18P/ref=sr_1_2?keywords=RTX+3070ti&qid=1694537391&sr=8-2“}

Python 解析 Beautifulsoup

评论

1赞 Andrej Kesely 9/12/2023
这意味着服务器不可用。也许您可以在一段时间后重复该请求。
0赞 Mous 9/12/2023
有关详细信息,我建议查看 HTTP 响应状态代码
0赞 Mous 9/12/2023
有关更多信息,请查看 MDN 上的 HTTP 响应状态代码
0赞 Driftr95 9/12/2023
他们不喜欢机器人。即使你没有收到错误,你也只会得到验证码......不过,你可以试试 Selenium

答:

0赞 Driftr95 9/13/2023 #1

我怎样才能使我的程序更加一致和可靠。

您可以多次运行抓取工具[中间有一段时间,以防万一被阻止]并仅使用非空值进行更新,或者[正如我的评论中建议的那样]尝试使用selenium,因为这可能会提供更一致和可靠的结果。

评论

0赞 Timur 9/13/2023
我已经在使用 Selenium 并尝试将多个时间间隔与一些间隔连接起来,并且通常在 2 或 3 次重试后获取数据(这是我称我的程序不一致的原因之一),并且我添加了对某些值的检查,即如果产品名称为 Null,我从图像标签内的 alt 等解析它,但它仍然不够好