如何使用 css 选择器从特定 class 中查找所有下一个兄弟姐妹
How to find all next siblings from a particular class using css selectors
我想抓取此网站 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 />
您可以使用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
...
我想抓取此网站 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 />
您可以使用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
...