【问题标题】:Problems with user agent on urlliburllib 上的用户代理问题
【发布时间】:2018-10-02 21:13:40
【问题描述】:

我想获取网站的 HTML,但由于我想是用户代理,我无法获取它。因为当我调用 uClient=ureq(my_url) 时,我收到如下错误: urllib.error.HTTPError: HTTP Error 403: Forbidden

这是代码:

from urllib.request import urlopen as ureq, Request
from bs4 import BeautifulSoup as soup
my_url= 'https://hsreplay.net/meta/#tab=matchups&sortBy=winrate'

ureq(Request(my_url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'}))


uClient=ureq(my_url)
page_html=uClient.read()
uClient.close()

html=soup(page_html,"html.parser")

我尝试了其他方法来更改用户代理和其他用户代理,但它不起作用。

我很确定你会帮忙的。谢谢!!

【问题讨论】:

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


    【解决方案1】:

    你上面所做的显然是一团糟。代码根本不应该运行。请尝试以下方式。

    from bs4 import BeautifulSoup
    from urllib.request import Request,urlopen
    
    URL = "https://hsreplay.net/meta/#tab=matchups&sortBy=winrate"
    
    req = Request(URL,headers={"User-Agent":"Mozilla/5.0"})
    res = urlopen(req).read()
    soup = BeautifulSoup(res,"lxml")
    name = soup.find("h1").text
    print(name)
    

    输出:

    HSReplay.net
    

    顺便说一句,您可以从该页面上刮掉一些不是javascript encrypted 的项目。但是,该页面的核心内容是动态生成的,因此您无法使用urllibBeautifulSoup 获取它们。要获得它们,您需要选择任何浏览器模拟器,例如 selenium 等。

    【讨论】:

    • 您可以使用soup = BeautifulSoup(res,"html.parser") 代替soup = BeautifulSoup(res,"lxml")。我这样做是因为 lxml 更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多