【问题标题】:My code returns HTTP Error 403: Forbidden我的代码返回 HTTP 错误 403:禁止
【发布时间】:2018-11-17 16:54:04
【问题描述】:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

myUrl = "https://mee6.xyz/levels/159962941502783488"

uClient = uReq(myUrl)
pageHtml = uClient.read()
print("pageHtml)

我正在尝试访问一个页面以开始抓取它,但它回答说 HTTP 被禁止,我查找了其他结果,但它们与我的代码处理方式不匹配

【问题讨论】:

  • 您可以从您的网络浏览器访问该网址吗?错误 403 表示您尝试访问的资源(或网页)被禁止。首先看看你是否可以从普通浏览器加载网站,并检查 url 中是否有拼写错误。
  • 也可以看看这个教程,并考虑使用'urllib2',因为它是一个非常简单和有用的库。
  • URL 打开并运行,代码也适用于另一个网站。只是使用不和谐的网址是行不通的。

标签: python beautifulsoup request screen-scraping urllib


【解决方案1】:

由于您的用户代理,您被阻止了。尝试像这样欺骗您的用户代理:

from urllib.request import urlopen as uReq
from urllib.request import Request
from bs4 import BeautifulSoup as soup

myUrl = "https://mee6.xyz/levels/159962941502783488"

req = Request(
    myUrl, 
    data=None, 
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
    }
)

uClient = uReq(req)
pageHtml = uClient.read()
print(pageHtml)

【讨论】:

  • 这是在读取所有类型的用户代理吗?如果是这样,您如何选择单个版本。
  • 这将其设置为在 Windows 10 上伪装成 Chrome。看起来 Windows 10 上的 Chrome 是服务器允许的,所以它允许它进入。如果你愿意,你可以尝试另一个常见的用户代理在要模拟的浏览器中转到whatsmyua.info 并复制用户代理字符串。
猜你喜欢
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2022-01-22
  • 2017-12-15
相关资源
最近更新 更多