【问题标题】:Getting HTTP 404 Error when Web Scraping in Python 3.7在 Python 3.7 中进行 Web 抓取时出现 HTTP 404 错误
【发布时间】:2018-12-06 13:39:46
【问题描述】:

我在尝试抓取某个网站时收到 404 错误代码(如下所示)

我尝试在不同的论坛上寻找答案,但找不到解决方案

有人有解决这个 404 错误的方法吗?

网站网址是https://www.transfermarkt.com/stoke-city/startseite/verein/512/saison_id/2018

>>> from urllib.request import urlopen as uReq
>>> from urllib.request import Request
>>> from bs4 import BeautifulSoup as soup
>>> my_url = "https://www.transfermarkt.com/stoke-city/startseite/verein/512/saison_id/2018"
>>> uClient = uReq(my_url)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 531, in open
response = meth(req, response)
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 569, in error
return self._call_chain(*args)
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 503, in _call_chain
result = func(*args)
File "C:\Users\King Carmo\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

【问题讨论】:

  • 您可以添加文本而不是图像。
  • @DipankarNalui 我已经编辑了帖子并包含了文本
  • 似乎,问题出在 URL 上。能否请您检查任何其他网址。
  • 似乎,SSL 有问题:CERTIFICATE_VERIFY_FAILED

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


【解决方案1】:

您需要传递用户代理标头

import requests
from bs4 import BeautifulSoup
url = 'https://www.transfermarkt.com/stoke-city/startseite/verein/512/saison_id/2018'
res  = requests.get(url,headers={'User-Agent': 'Mozilla/5.0'})
print(res.status_code)
soup = BeautifulSoup(res.content, 'lxml')

print(soup.select_one('html'))

【讨论】:

    【解决方案2】:

    尝试使用Requests-HTML

    from requests_html import HTMLSession
    
    link = "https://www.transfermarkt.com/stoke-city/startseite/verein/512/saison_id/2018"
    
    session = HTMLSession()
    r = session.get(link)
    

    显示我收到 200 响应。好的。

    In  [01]: print (r)
    Out [01]: <Response [200]>
    

    【讨论】:

      【解决方案3】:

      此网址不支持HTTPS,尝试将其更改为HTTP,应该可以。

      >>> my_url = "https://www.transfermarkt.com/stoke-city/startseite/verein/512/saison_id/2018"
      

      使用我的浏览器,我无法打开 https 版本,但 http 可以正常工作。

      【讨论】:

      • 奇怪。我可以使用 HTTPS 在我的手机上打开它,但在我的笔记本电脑上却不能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      相关资源
      最近更新 更多