如何使用 css 选择器从特定 class 中查找所有下一个兄弟姐妹

How to find all next siblings from a particular class using css selectors

我想抓取此网站 Hotel Association Data 并需要有关 css 选择器的帮助。如果您看到下图,我正在尝试使用 css 选择器从此处提取地址。

我要抓取的数据:20 West 29th StreetNew 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 />

您可以使用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

...