如何使用 css 选择器从特定类中查找所有下一个兄弟姐妹
Posted
技术标签:
【中文标题】如何使用 css 选择器从特定类中查找所有下一个兄弟姐妹【英文标题】:How to find all next siblings from a particular class using css selectors 【发布时间】:2016-03-21 03:24:57 【问题描述】:我想抓取这个网站Hotel Association Data 并需要有关 css 选择器的帮助。如果您看到下图,我正在尝试使用 css 选择器从此处提取地址。
我要抓取的数据:20 West 29th Street
和 New York, NY 10001
使用下一个兄弟方法
我知道我们可以使用+
符号找到下一个兄弟,但这里的问题是地址文本都没有与之关联的任何attribute
。我不想在这里使用xpath
,而是使用通用css选择器来查找.hanyccompany
的所有兄弟姐妹,然后从中提取文本。
谁能告诉我如何找到class='hanyccompany
的所有兄弟姐妹
<span class="hanyccompany"><a href="http://www.acehotel.com/" target="_blank">ACE HOTEL NEW YORK</a></span><br />
20 West 29th Street<br />
New York, NY 10001<br />
【问题讨论】:
【参考方案1】:您可以使用 BeautifulSoup 轻松解析和提取数据。
from bs4 import BeautifulSoup
from mechanize import Browser
br = Browser()
br.addheaders = [('User-agent', 'Firefox')]
response = br.open("http://www.hanyc.org/members/hotels/")
web_data = response.read()
soup = BeautifulSoup(web_data, "html.parser")
tags = soup.find_all('span', attrs="class": "hanyccompany")
for tag in tags:
print(tag.parent.text)
print("------------------------------")
如果你打印 span 父级的文本,你会得到类似的东西
ACE HOTEL NEW YORK
20 West 29th Street
New York, NY 10001
Jan Rozenveld, Managing Director
(212) 679-2222
(212) 679-1947
jan.rozenveld@acehotel.com
...
【讨论】:
我想提取address
而不是class=hanyccompany
或者我想提取class=hanyccompany
的所有兄弟姐妹
查看更新后的帖子。您可以遍历标签列表并获取父标签。
或tag.parent.text
只会给你没有所有标签的内部文本。
web_data 不是网址。你有责任用你想要的任何方法读取 url 和提取 html 内容。 web_data 包含最终的 html
不,它不起作用。我的web_data
包含所有 html 内容,但我看不到任何输出。以上是关于如何使用 css 选择器从特定类中查找所有下一个兄弟姐妹的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CSS 选择器使用 BeautifulSoup 检索位于某个类中的特定链接?