Python请求提供与Internet Explorer不同的页面文本

时间:2014-08-08 04:59:37

标签: python internet-explorer python-requests

查看我的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()

截图

screenshot

查看来源 view_source

python请求 python_requests

2 个答案:

答案 0 :(得分:1)

您的脚本(或其他用户)看不到该字段。如果要废弃该信息,则需要登录脚本并存储相应的cookie。

这是不是你的用户所看到的: Profile

他们看到的代码块:

 <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