Beautiful Soup 4 CSS 选择器的工作方式与教程显示的方式不同
Posted
技术标签:
【中文标题】Beautiful Soup 4 CSS 选择器的工作方式与教程显示的方式不同【英文标题】:Beautiful Soup 4 CSS selector does not work the same way the tutorial show 【发布时间】:2013-10-31 05:35:47 【问题描述】:我从 [Beautiful Soup 4 教程页面][1] 运行 示例 CSS 选择器 代码,但结果不同,有些给出正确的结果,有些则没有。在网站上,他们说它应该在 Python 2.7 和 3 中以相同的方式工作。我有 Python 2.7 并安装 Beautiful Soup 4。有人有同样的问题吗?
from bs4 import BeautifulSoup
import urllib2
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html_doc)
我的测试(当然我在教程中使用相同的 html 文档):
soup.select("#link1 ~ .sister")
[]
他们的测试:
soup.select("#link1 ~ .sister")
# [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
Click Here to See
【问题讨论】:
你能告诉我们你的soup
变量初始化吗?
好的,我刚刚编辑了问题
刚刚试过你的代码,它对我有用。你用 pip 安装了漂亮的汤吗?
不,我下载了源码包并运行 $python setup.py install
我有同样的问题@HoangPham。努力为您提供解决方案。我用pip
安装。
【参考方案1】:
我发现了你的问题。您使用的 BeautifulSoup 版本早于 4.3.2。
我刚刚安装了 4.1.2,并运行了您的代码。我遇到了同样的问题,我得到了一个空列表,现在我已经将它更新到 4.3.2,我又得到了兄弟姐妹的列表。
您可以通过 pip 安装它,但您也可以获取最新的version from Pypi 并下载它。
【讨论】:
哇,太好了,它有效!非常感谢。我以为我下载了最新版本,因为我按照教程到 BeautifulSoup 包的下载页面。谢谢。 教程页面链接到没有最新版本的下载站点。 这里使用 python3.4 和 bs4.4 出现同样的问题:s以上是关于Beautiful Soup 4 CSS 选择器的工作方式与教程显示的方式不同的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫编程思想(58): 用Beautiful Soup CSS选择器嵌套选择节点
Python爬虫编程思想(59): 用Beautiful Soup CSS选择器获取属性值与文本
2017.08.11 Python网络爬虫实战之Beautiful Soup爬虫
Python爬虫学习笔记.Beautiful Soup库的使用