【发布时间】:2020-11-29 18:49:40
【问题描述】:
我想使用 BeautifulSoup(或其他网络抓取工具)从网站中提取数据,但由于网站的 URL 在您以用户身份登录之前和之后是相同的,因此很困难。我不想在这里公开分享网站地址,但如果需要,我会在下面发表评论。举个简单的例子,我们以“example.com”作为参考:
当您第一次导航到 abc.com 时,URL 就是那个 (example.com)。要登录,用户单击登录按钮,然后被带到“example.com/login”。问题是,在成功登录后,尽管 HTML 代码发生了变化,但 URL 返回到“example.com”。当我尝试使用 BS4 抓取并获取网站的 HTML 代码时,我得到的是登录前的 HTML 代码,尽管需要在登录后访问 HTML。
这是我所拥有的:
from bs4 import BeautifulSoup
import requests
source = requests.get('https://www.example.com/').text
soup = BeautifulSoup(source, 'html5lib')
name = soup.find('pointer')
# this is the class I'm trying to search for, although am not able to find
# because it is not part of
# the HTML code in the **pre-log-in** - the class is part of the HTML after
# logging in
print(soup.prettify())
有谁知道我该如何解决这个问题?
谢谢
【问题讨论】:
-
您是否尝试在登录后从浏览器中的开发人员工具中获取会话 cookie,然后将其传递到请求的标头中?
-
这有点超出我的技能水平,但我可以尝试谷歌/学习如何做到这一点。到时候我会回来的! :)
-
您能否提供一个会话 cookie 的示例(格式)?我不确定要查找什么,但我在特定网站的 cookie 中
-
这取决于网站,但它总是在标题中传递。查看developers.google.com/web/tools/chrome-devtools/storage/cookies 以获取有关如何找到它的建议,或者更好地查看
requests库requests.readthedocs.io/en/master/user/advanced 中的会话对象。它将为您管理标题。
标签: python html web-scraping beautifulsoup