python - 如何在 python 中使用 beautifulsoup(或任何其他刮刀)刮取检查过的元素?
问题描述
我正在编写一个抓取程序。我首先使用 selenium 来获取元素的源(一个 mp4 文件),然后我看到 selenium 主要用于自动化和测试,而不是抓取。我认为使用其他刮板模块会更合理。但是当我使用requests+beautifulsoup
或者urllib2/3+beautifulsoup
我无法获得检查元素时。他们正在获取页面源,但在我正在工作的网页中,页面源与我检查时弹出的 HTML 不同。(我不太了解检查和页面源代码之间的区别,但我想这与 JS 有关。)有什么想法可以解决这个问题吗?这是我的代码:
from bs4 import BeautifulSoup
import requests
response = requests.get("https://animefrenzy.org/stream/one-piece-episode-974")
soup = BeautifulSoup(response.text,"lxml")
print(soup)
这是我想要作为字符串的 html: 检查
这是我执行上述代码时得到的结果: 终端结果
解决方案
如果您只想要 HTML(Source),那么这里是获取它的代码。
from selenium import webdriver
import time
driver = webdriver.Firefox/Chrome(executable_path=r'/path/to/webdriver')
driver.get('https://animefrenzy.org/stream/one-piece-episode-974')
time.sleep(10)
html=driver.page_source
print(html)
这应该给你你想要的 HTML,我们使用time.sleep(10)
是因为页面必须加载 javascript 并更改页面的内容。如果您没有获得所需的 HTML,请尝试将睡眠时间更改为更多,以便该页面将完全加载。
推荐阅读
- javascript - React-Native-Maps:设置地图边界功能不准确
- unity3d - 带输入的 Drop In Drop Out 系统?
- android - 子项目模块无法解析它自己的依赖
- javascript - jsp中的Json Hash映射视图
- dart - 如何检查值是否为枚举?
- mongodb - $addToSet 没有更新数组中的对象?
- javascript - 反应上下文 - 'contextType' 未定义
- python - 用元组和列表理解字典分配
- android - 如何在整个活动生命周期中正确保存列表视图项中的数据?
- c# - 引发事件 c# 给出错误:没有重载匹配委托 EventHandler