python - BeautifulSoup "AttributeError: 'NoneType' 对象没有属性 'text'"
问题描述
我正在使用 bs4搜索天气搜索 Google<span>
的网页,而当有标签时Python 找不到标签。我怎么解决这个问题?
我试图<span>
用class
和找到这个id
,但都失败了。
<div id="wob_dcp">
<span class="vk_gy vk_sh" id="wob_dc">Clear with periodic clouds</span>
</div>
以上是我试图在页面中抓取的 HTML 代码:
response = requests.get('https://www.google.com/search?hl=ja&ei=coGHXPWEIouUr7wPo9ixoAg&q=%EC%9D%BC%EB%B3%B8+%E6%A1%9C%E5%B7%9D%E5%B8%82%E7%9C%9F%E5%A3%81%E7%94%BA%E5%8F%A4%E5%9F%8E+%EB%82%B4%EC%9D%BC+%EB%82%A0%EC%94%A8&oq=%EC%9D%BC%EB%B3%B8+%E6%A1%9C%E5%B7%9D%E5%B8%82%E7%9C%9F%E5%A3%81%E7%94%BA%E5%8F%A4%E5%9F%8E+%EB%82%B4%EC%9D%BC+%EB%82%A0%EC%94%A8&gs_l=psy-ab.3...232674.234409..234575...0.0..0.251.929.0j6j1......0....1..gws-wiz.......35i39.yu0YE6lnCms')
soup = BeautifulSoup(response.content, 'html.parser')
tomorrow_weather = soup.find('span', {'id': 'wob_dc'}).text
但是这段代码失败了,错误是:
Traceback (most recent call last):
File "C:\Users\sungn_000\Desktop\weather.py", line 23, in <module>
tomorrow_weather = soup.find('span', {'id': 'wob_dc'}).text
AttributeError: 'NoneType' object has no attribute 'text'
请解决这个错误。
解决方案
这是因为天气部分是由浏览器通过 JavaScript 呈现的。因此,当您使用时,requests
您只会获得页面的 HTML 内容,而该页面没有您需要的内容。如果你想用 web 浏览器渲染的元素解析页面,你应该使用 example selenium
(or )。requests-html
from bs4 import BeautifulSoup
from requests_html import HTMLSession
session = HTMLSession()
response = session.get('https://www.google.com/search?hl=en&ei=coGHXPWEIouUr7wPo9ixoAg&q=%EC%9D%BC%EB%B3%B8%20%E6%A1%9C%E5%B7%9D%E5%B8%82%E7%9C%9F%E5%A3%81%E7%94%BA%E5%8F%A4%E5%9F%8E%20%EB%82%B4%EC%9D%BC%20%EB%82%A0%EC%94%A8&oq=%EC%9D%BC%EB%B3%B8%20%E6%A1%9C%E5%B7%9D%E5%B8%82%E7%9C%9F%E5%A3%81%E7%94%BA%E5%8F%A4%E5%9F%8E%20%EB%82%B4%EC%9D%BC%20%EB%82%A0%EC%94%A8&gs_l=psy-ab.3...232674.234409..234575...0.0..0.251.929.0j6j1......0....1..gws-wiz.......35i39.yu0YE6lnCms')
soup = BeautifulSoup(response.content, 'html.parser')
tomorrow_weather = soup.find('span', {'id': 'wob_dc'}).text
print(tomorrow_weather)
输出:
pawel@pawel-XPS-15-9570:~$ python test.py
Clear with periodic clouds
推荐阅读
- excel - Excel中的自动递增数字值
- javascript - 如何使用 Promise 和循环遍历 mongoose 集合
- kubernetes - k8s 相对于节点数动态设置副本数
- gradle - 如何在 Groovy 类中访问 build.gradle 中定义的额外属性?
- java - IBM Watson 语音到文本集成
- r - R - 带有ggplot2的climograph:更改降水值以适合第二轴
- c++ - 我的通用参考模板功能不起作用
- php - 分页在我的应用程序上不起作用 - CodeIgniter
- python - 从 seaborn clustermap 结果重新排序高级集群
- xml - 使用 xslt 1.0 版提取唯一属性值