查看我的stackoverflow用户个人资料页面:https://stackoverflow.com/users/2683104/roberto
该网站显示我已成为会员316天(截止日期截图)。如果我在浏览器中使用view source
(IE11),我可以看到此数据来自days-visited
类。
但如果我使用Python请求查找相同的days-visited
信息,则数据不会出现在任何地方。为什么呢?
from requests import Session
from BeautifulSoup import BeautifulSoup
s = Session()
url = 'https://stackoverflow.com/users/2683104/roberto'
page = s.get(url)
soup = BeautifulSoup(page.text)
print soup.prettify() #server response, prettified
# following returns error
# AttributeError: 'NoneType' object has no attribute 'getText'
#days_visited = soup.find('span', attrs={'id':'days-visited'}).getText()
s.close()
截图
查看来源
python请求
答案 0 :(得分:1)
您的脚本(或其他用户)看不到该字段。如果要废弃该信息,则需要登录脚本并存储相应的cookie。
这是不是你的用户所看到的:
他们看到的代码块:
<tbody>
<tr>
<th>visits</th>
<td>member for</td>
<td class="cool" title="2013-08-14 15:38:01Z">11 months</td>
</tr>
<tr>
<th></th>
<td>seen</td>
<td class="supernova" title="2014-08-08 05:26:50Z">
<span title="2014-08-08 05:26:50Z" class="relativetime">6 mins ago</span>
</td>
</tr>
</tbody>
通常情况下,我建议不要为数据抓取Stack Overflow,而是使用API,但这些特定信息不会作为User对象的一部分返回。
答案 1 :(得分:1)
正如评论所说,'days-visited'仅在您登录时显示。只有会员本人才能看到它。
您可以在浏览器中找到cookie并在请求中使用cookie。
http://docs.python-requests.org/en/latest/user/quickstart/#cookies