我想获取网站的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")
我尝试了其他更改用户代理和其他用户代理的方法,但它不起作用。
我很确定你会帮忙的。谢谢!
答案 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
的项目。但是,该页面的核心内容是动态生成的,因此您无法使用urllib
和BeautifulSoup
抓取它们。要获得它们,您需要选择任何浏览器模拟器,如selenium
等。