我需要从此HTML代码中打印出美国和加拿大的字样:
<div class="txt-block">
<h4 class="inline">Country:</h4>
<a href="/search/title?country_of_origin=us&ref_=tt_dt_dt" itemprop="url">USA</a>
<span class="ghost">|</span>
<a href="/search/title?country_of_origin=ca&ref_=tt_dt_dt" itemprop="url">Canada</a>
</div>
如何用bs4获取单词?我用谷歌搜索了它,但我没有发现任何有用的东西。
答案 0 :(得分:0)
如果这就是你所拥有的,你可以为每个标签使用get_text。 请试试这个
from bs4 import BeautifulSoup
html="""<div class="txt-block">
<h4 class="inline">Country:</h4>
<a href="/search/title?country_of_origin=us&ref_=tt_dt_dt" itemprop="url">USA</a>
<span class="ghost">|</span>
<a href="/search/title?country_of_origin=ca&ref_=tt_dt_dt" itemprop="url">Canada</a>
</div>"""
soup = BeautifulSoup(html, 'html.parser')
[atag.get_text() for atag in soup.find_all('a')]
答案 1 :(得分:0)
要获取文本,以下代码将起作用:
from bs4 import BeautifulSoup
html_string = """<div class="txt-block">
<h4 class="inline">Country:</h4>
<a href="/search/title?country_of_origin=us&ref_=tt_dt_dt" itemprop="url">USA</a>
<span class="ghost">|</span>
<a href="/search/title?country_of_origin=ca&ref_=tt_dt_dt" itemprop="url">Canada</a>
</div>"""
soup = BeautifulSoup(html_string)
print([node.string for node in soup.find_all('a', attrs={"itemprop" : "url"})] )
以上代码将导致:
[u'USA', u'Canada']
您可以参考BeautifulSoup Documentation here。它非常易于使用和直接使用。
此外,您在 lxml 的帮助下使用此操作,这比BeautifulSoup快一个数量级。
from lxml import html
html_string = """<div class="txt-block">
<h4 class="inline">Country:</h4>
<a href="/search/title?country_of_origin=us&ref_=tt_dt_dt" itemprop="url">USA</a>
<span class="ghost">|</span>
<a href="/search/title?country_of_origin=ca&ref_=tt_dt_dt" itemprop="url">Canada</a>
</div>"""
root = html.fromstring(html_string)
print(root.xpath('//a[@itemprop="url"]//text()'))
这也将导致:
['USA', 'Canada']
答案 2 :(得分:0)
简单方法 findAll
可用于单独提取国家/地区名称。
这是Python 3中的解决方案代码:
from bs4 import BeautifulSoup
html ="""
<div class="txt-block">
<h4 class="inline">Country:</h4>
<a href="/search/title?country_of_origin=us&ref_=tt_dt_dt" itemprop="url">USA</a>
<span class="ghost">|</span>
<a href="/search/title?country_of_origin=ca&ref_=tt_dt_dt" itemprop="url">Canada</a>
</div>
"""
soup = BeautifulSoup(html,"html.parser")
for i in soup.findAll("a"):
print(i.text)
执行上述代码将为您提供所需的结果:
USA
Canada