python beautifulsoup 怎么得到option的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python beautifulsoup 怎么得到option的值相关的知识,希望对你有一定的参考价值。
注:1. 我已有方法,别给我提别的方法,如:正则表达式。
2. 不知道的别回答,广告请走开。
已知网页: <option value="28">电子零组件业</option>
我要获取网页中 option 的value值和text值。
data = (soup.html.find_all("option"))
data.string 和 data.text 打印出来是 “电子零组件业”
怎么得到 28?
data.value 打印出来是null
# using python27
from bs4 import BeautifulSoup
soup = BeautifulSoup('<option value="28">电子零组件业</option>', 'lxml')
data = soup.findall('option')[0] # findall返回列表,因为只有一个,所以索引0
text = data.text
value = data['value'] # 注意这个是字符串不是数字
print "text:%s value:%s" % (text, value)
输出结果:
text:电子零组件业 value:28 参考技术A >>> soup = BeautifulSoup('<option value="28">电子零组件业</option>', 'lxml')>>> for option in soup.find_all('option'):
... print(option['value'], option.text)
...
28 电子零组件业
>>>
安装了 BeautifulSoup 但仍然没有得到名为 bs4 的模块
【中文标题】安装了 BeautifulSoup 但仍然没有得到名为 bs4 的模块【英文标题】:Installed BeautifulSoup but still get no module named bs4 【发布时间】:2018-07-07 15:27:14 【问题描述】:我使用的是 Jupyter 笔记本、Python 3.5 和虚拟环境。
在我的虚拟环境中我做了:
(venv) > pip install BeautifulSoup4
这似乎运行良好 b/c 终端输出是:
Downloading beautifulsoup4-4.6.0-py2-none-any.whl (86kB)
100% |████████████████████████████████| 92kB 297kB/s
Installing collected packages: BeautifulSoup4
Successfully installed BeautifulSoup4-4.6.0
但是当我运行我的 Jupyter 笔记本时,我得到:
ImportError Traceback (most recent call last)
<ipython-input-1-5fe69888b1a1> in <module>()
5 from itertools import groupby
6 import pickle
----> 7 import bs4
8 import matplotlib.pyplot as plt
9 get_ipython().run_line_magic('matplotlib', 'inline')
ImportError: No module named 'bs4'
而且我无法将import bs4
更改为from bs4 import BeautifulSoup
,这是我在其他 SO 帖子中看到的 b/c 它是只读的,我不应该这样做
【问题讨论】:
【参考方案1】:我遇到了同样的问题,bs4 与 Jupyter Lab 一起安装在我的虚拟环境中。 Jupyter 会抛出 ModuleNotFound 错误,但如果我在 Visual Studio Code 中打开笔记本并选择 .venv 作为解释器,它就可以工作。
我通过从虚拟环境中卸载并改用sudo apt-get install python3-bs4
安装来让它在 Jupyter Lab 中工作。
【讨论】:
【参考方案2】:由于您使用的是 Python 3,我认为您需要这样做
pip3 install BeautifulSoup4
对于 Python 2 包,只需 pip install。
其他需要检查的事项:
首先确保在 virtualenv 中运行 BeautifulSoup 安装,并在 virtualenv 中运行 python3 提示符或 Jupyter notebook。如果您在根环境中进行了安装,并且笔记本在您的 virtualenv 中运行,反之亦然,您的 site-packages 目录可能不匹配。
通过在命令提示符下键入 pip3 list 并注意它出现在列表中,确保您的包确实已安装。
检查您的 Jupyter 笔记本是否确实在运行 Python 3.5 内核(浏览器窗口的右上角)
检查安装包的路径是否在你的 sys.path 中
打开 Python3 提示符或在 Jupyter 中运行
import sys
print (sys.path)
【讨论】:
我不认为这是问题 b/c 我已经尝试过并得到:Requirement already satisfied: BeautifulSoup4 in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
我认为它安装了错误的(Python2)包。尝试删除它并使用 pip3 重新安装。它正在查找包,但无法从 Python 3 virtualenv 导入
好的,我做了pip uninstall BeautifulSoup4
、pip3 uninstall BeautifulSoup4
和pip3 uninstall bs4
。然后我做了pip3 install BeautifulSoup4
,终端说Collecting BeautifulSoup4 Using cached beautifulsoup4-4.6.0-py3-none-any.whl Installing collected packages: BeautifulSoup4 Successfully installed BeautifulSoup4-4.6.0
,但它仍然无法正常工作:(
import bs4 仍然失败?也从 bs4 导入 BeautifulSoup ?后者至少应该工作。还要执行 pip3 list 并确保它确实在包列表中。如果失败,您可能需要使用 setup.py 从源代码安装
没关系!我想你已经走到了尽头! b/c 当我将bs4
文件夹和beautifulsoup
文件夹从/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
复制并粘贴到/Users/.../venv/lib/python3.5/site-packages
时,该导入语句现在有效。但是现在我在不同的包上遇到了相同的导入错误。所以看来你说的是对的。但是我在终端上感到困惑,我看到(venv) >
,所以我觉得我应该安装在我的venv
中,所以我不确定为什么我不这样做以上是关于python beautifulsoup 怎么得到option的值的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Python 中使用 BeautifulSoup 得到“'ResultSet' 没有属性 'findAll'”?
使用python的beautifulsoup读取xml配置文件
关于python中BeautifulSoup多层嵌套下标签内容寻找使用方法。