urllib上的用户代理问题

时间:2018-04-22 20:55:40

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

我想获取网站的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")

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

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

1 个答案:

答案 0 :(得分:0)

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

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等。