【问题标题】:How to use Python BeautifulSoup when website URL does not change?网站 URL 不变时如何使用 Python BeautifulSoup?
【发布时间】: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 以获取有关如何找到它的建议,或者更好地查看requestsrequests.readthedocs.io/en/master/user/advanced 中的会话对象。它将为您管理标题。

标签: python html web-scraping beautifulsoup


【解决方案1】:

如何使用 selenium 登录,然后将页面的源代码传递给 beautifulsoup,然后从那里开始工作?可能是实现这一目标的最简单方法。

【讨论】:

  • 在这种情况下,我只需要在会话开始时正确执行一次(当我初始化我的网络驱动程序并第一次运行它时)?
  • 是的,我自己做了类似的事情,我首先获取一个网站,向下滚动以加载整个页面,然后将页面源导入到 beautifulsoup 必须获取的源
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 2020-11-07
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
相关资源
最近更新 更多