【发布时间】:2019-03-11 21:35:14
【问题描述】:
我正在尝试使用 Python 在 www.twitch.tv/directory 上抓取观众。我已经尝试了基本的 BeautifulSoup 脚本:
url= 'https://www.twitch.tv/directory'
html= urlopen(url)
soup = BeautifulSoup(url, "html5lib") #also tried using html.parser, lxml
soup.prettify()
这给了我没有显示实际观众人数的 html。
然后我尝试使用参数 ajax 数据。 From this thread
param = {"action": "getcategory",
"br": "f21",
"category": "dress",
"pageno": "",
"pagesize": "",
"sort": "",
"fsize": "",
"fcolor": "",
"fprice": "",
"fattr": ""}
url = "https://www.twitch.tv/directory"
# Also tried with the headers parameter headers={"User-Agent":"Mozilla/5.0...
js = requests.get(url,params=param).json()
但我收到 JSONDecodeError: Expecting value: line 1 column 1 (char 0) 错误。
从那时起我转向硒
driver = webdriver.Edge()
url = 'https://www.twitch.tv/directory'
driver.get(url)
#Also tried driver.execute_script("return document.documentElement.outerHTML") and innerHTML
html = driver.page_source
driver.close()
soup = BeautifulSoup(html, "lxml")
这些只是产生与标准 BeautifulSoup 调用相同的结果。
任何关于抓取观看次数的帮助将不胜感激。
【问题讨论】:
-
我刚刚检查了页面并查看了源代码 - 似乎所有数据都是通过 javascript 获取的,那里没有“正常”的 HTML。因此,不可能从 HTML 中转义该数据,就像 BeatifulSoup 所做的那样——它们解析 HTML,它们也无法运行 Javascript。
-
@RobinZigmond 嗨罗宾。是否有其他方法可以获取我可以查看的这些数据?谢谢。
-
恐怕我真的不知道,我不使用twitch。看来 twitch 有一个 API,正如我所期望的那样:dev.twitch.tv/api - 我想你可以从中获得你需要的信息,但我不知道如何使用它。
-
@RobinZigmond 我会调查的。它可能最终成为最简单的方法
标签: javascript python web-scraping beautifulsoup twitch