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

# coding=utf-8
# 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 BeautifulSoup4pip3 uninstall BeautifulSoup4pip3 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/python‌​‌​3.5/site-packages 复制并粘贴到/Users/.../venv/lib/python3.5/site-packages 时,该导入语句现在有效。但是现在我在不同的包上遇到了相同的导入错误。所以看来你说的是对的。但是我在终端上感到困惑,我看到(venv) &gt;,所以我觉得我应该安装在我的venv 中,所以我不确定为什么我不这样做

以上是关于python beautifulsoup 怎么得到option的值的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 Python 中使用 BeautifulSoup 得到“'ResultSet' 没有属性 'findAll'”?

使用python的beautifulsoup读取xml配置文件

关于python中BeautifulSoup多层嵌套下标签内容寻找使用方法。

python beautifulsoup 怎么定位class

Python BeautifulSoup 硒刮刀

BeautifulSoup 在 Django 中没有得到任何输出