我用python创建了一个脚本来解析一些html元素的地址。当我执行脚本时,我从元素中得到title
、address
和phone
数字,而我的目的是只得到地址。如果我使用next_sibling
,我只能得到地址的第一部分,这就是为什么我跳过了这个方法。你知道吗
如何从下面的代码片段中只获取地址而不获取其他内容?你知道吗
from bs4 import BeautifulSoup
htmldoc = """
<div class="search-article-title-description">
<div class="search-article-title">
<a href="https://www.pga.com/pgapro/info/999918438?atrack=pgapro%3Anone&seapos=result%3A1%3AJeff%20S%20Swangim%2C%20PGA&page=1">Jeff S Swangim, PGA</a>
<div class="search-article-protitle">
Assistant Professional
</div>
</div>
<div class="search-article-address">
<div class="search-instructor-course">
Lake Toxaway Country Club
</div>
4366 W Club Blvd<br>Lake Toxaway, NC 28747-8538<br>
<div class="spotlightphone_num">
(828) 966-4661
</div>
</div>
</div>
"""
soup = BeautifulSoup(htmldoc,"lxml")
address = soup.select_one(".search-article-address").get_text(strip=True)
print(address)
我现在得到的是:
Lake Toxaway Country Club4366 W Club BlvdLake Toxaway, NC 28747-8538(828) 966-4661
我的预期产出:
4366 W Club BlvdLake Toxaway, NC 28747-8538
我能想到的最简单的方法是使用
.extract()
函数去掉您不感兴趣的部分。如果我们可以忽略类search-instructor-course
和spotlightphone_num
的内容,那么剩余部分就是所需的部分。你知道吗下面的脚本应该为我们提供地址:
可能有一种更优雅的方法,但是您希望使用
.next_sibling
是正确的输出:
这里使用xpath表达式和lxml。您仍然可以将您的HTML内容传递给此。你知道吗
输出:
或者,更简单地说,感谢@SIM,只要:
相关问题 更多 >
编程相关推荐