用Python刮擦JavaScript呈现的网站的“脚本部分”

时间:2018-07-01 09:17:17

标签: python selenium

我正在制作一个项目,希望了解Reddit上各种subreddit上用户的平均业障。因此,我正在抓取用户业障,这对于新的reddit结构证明有点困难。

我无法使用PRAW,因为业力数据不正确。

根据用户的页面来源,我需要找到以下两个变量:commentKarma和postKarma。这两个变量都在“”部分下找到,请参见此处的示例view-source:https://www.reddit.com/user/loganb3171。但是,当我使用硒page_source或beautifulsoup时,它们不会显示。

我已经在这个问题上工作了两个小时了,距离我很远。

感谢您的帮助。

当您右键单击“查看页面源代码”时,这两个代码片段都无法像我一样提供整个页面源代码。

source_var = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")

source_var=driver.page_source

1 个答案:

答案 0 :(得分:1)

好的,所以我看到您正在使用问题摘录中的硒。如果是这种情况,则无法使用Web驱动程序设置请求标头。 Reddit会知道您是机器人。

如果只需要页面源,则可以使用请求来获取页面并使用硒打开它,或使用BeautifulSoup来解析页面

from bs4 import BeautifulSoup
import requests

url = "https://www.reddit.com/user/loganb3171"
page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(page.text, 'html.parser')

print(soup.prettify())