在第二个元素之后提取

时间:2018-03-11 23:21:23

标签: python web-scraping beautifulsoup

我想从以下内容中提取United States

address = '1 McDonalds Dr<br/>OAK BROOK, IL 60523-1911<br/>United States'

我试过了:

for br in address.find_all('br', limit=2):
    result = br.next_sibling
    print(result)

它又回来了:

OAK BROOK, IL 60523-1911
United States

如何仅从中提取United States?感谢。

2 个答案:

答案 0 :(得分:1)

你快到了!

for br in address.find_all('br', limit=2):
    result = br.next_sibling
    print(result)

循环遍历所有<br>标记,然后为每个标记执行循环体。由于您的address包含两个<br>标记,因此您将获得两个结果。由于您只想从第二个结果中获取结果,因此您只需要不要遍历它,而是直接访问第二个元素:

second_br = address.find_all('br', limit=2)[1]
result = second_br.next_sibling
print(result) # United States

答案 1 :(得分:0)

您可以使用bs4的.contents属性。如果您检查contents的{​​{1}},您会看到所需的文字位于最后一个索引中。您可以使用address

访问它
contents[-1]