【问题标题】:Web-scraping Adidas not returning html text网页抓取阿迪达斯不返回 html 文本
【发布时间】:2020-08-07 04:11:54
【问题描述】:

我正在尝试使用以下代码从阿迪达斯网上刮鞋:

from bs4 import BeautifulSoup
from urllib.request import Request, urlopen

req = Request('https://www.adidas.com/us/men-shoes', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
soup = BeautifulSoup(webpage)
print(webpage)

由于某种原因,它似乎无法检索页面的 html,尽管该代码似乎适用于其他 url,例如“http://www.python.org”。这可能是一个安全问题吗?如果是这样,我怎样才能从网站上刮掉鞋子?

我似乎没有收到错误或响应。代码似乎无限期地运行。

【问题讨论】:

  • 我认为你是对的,这很可能是一个安全问题,因为我对该 URL 做了一个简单的 CURL 请求,我收到了一个 403 Forbidden 消息,其中包含一些关于安全性的文本。
  • @SartajSinghGill 感谢您的尝试。请考虑为帖子点赞以提高知名度
  • 在运行此命令时发布您收到的错误或您在日志中看到的任何内容可能很有用?将有助于排除故障。
  • @SartajSinghGill 已添加,谢谢
  • 看起来阿迪达斯网站使用了更多的方法,而不仅仅是User-Agent 标头字段来检测正在连接的浏览器。长时间等待后,使用 CURL 或 wget 也会得到“连接已重置”,Python 组件似乎永远等待。您可能需要使用合适的浏览器,例如使用 Python 中的 selenium 等工具。

标签: python html python-3.x web-scraping python-requests


【解决方案1】:

当我使用与请求标头中相同的 User-Agent 时,以下代码对我有用:

from bs4 import BeautifulSoup

hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
html_page = requests.get("https://www.adidas.com/us/men-shoes", headers=hdr, timeout=15)

soup = BeautifulSoup(html_page.content, 'html.parser')
soup

1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多