我想div
从这样的HTML文件中获取位于标签中的数据(名称,城市和地址):
<div class="mainInfoWrapper">
<h4 itemprop="name">name</h4>
<div>
<a href="/Wiki/Province/Tehran"></a>
city
<a href="/Wiki/City/Tehran"></a>
Address
</div>
</div>
我不知道如何在该特定标签中获取所需的数据。显然我在beautifulsoup
库中使用python 。
<h4>
源HTML中有多个标签,但只有一个<h4>
具有itemprop="name"
属性,因此您可以首先搜索该标签。然后从那里访问剩余的值。请注意,以下HTML是从源页面正确复制的,而问题中的HTML不是:
from bs4 import BeautifulSoup
html = '''<div class="mainInfoWrapper">
<h4 itemprop="name">
NAME
</h4>
<div>
<a href="/Wiki/Province/Tehran">PROVINCE</a> - <a href="/Wiki/City/Tehran">CITY</a> ADDRESS
</div>
</div>'''
soup = BeautifulSoup(html)
name_tag = soup.find('h4', itemprop='name')
addr_div = name_tag.find_next_sibling('div')
province_tag, city_tag = addr_div.find_all('a')
name, province, city = [t.text.strip() for t in name_tag, province_tag, city_tag]
address = city_tag.next_sibling.strip()
当运行您提供的URL时
import requests
from bs4 import BeautifulSoup
r = requests.get('http://goo.gl/sCXNp2')
soup = BeautifulSoup(r.content)
name_tag = soup.find('h4', itemprop='name')
addr_div = name_tag.find_next_sibling('div')
province_tag, city_tag = addr_div.find_all('a')
name, province, city = [t.text.strip() for t in name_tag, province_tag, city_tag]
address = city_tag.next_sibling.strip()
>>> print name
بیمارستان حضرت فاطمه (س)
>>> print province
تهران
>>> print city
تهران
>>> print address
یوسف آباد، خیابان بیست و یکم، جنب پارک شفق، بیمارستان ترمیمی پلاستیک فک و صورت
我不确定终端上的打印输出是否正确,但是,此代码应为正确配置的终端生成正确的文本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句