import requests
from bs4 import BeautifulSoup
url = 'http://www.x-rates.com/table/?from=USD&amount=1'
page = requests.get(url)
soup = BeautifulSoup(page.content, "lxml")
print soup.prettify()
<td>
Chinese Yuan Renminbi
</td>
<td class="rtRates">
<a href="/graph/?from=USD&to=CNY">
6.887711
</a>
</td>
<td class="rtRates">
<a href="/graph/?from=CNY&to=USD">
0.145186
</a>
</td>
</tr>
请问我如何在标签&#39;之间提取内容? 假设我想在结果的第6行得到6.887711?
答案 0 :(得分:0)
您可以使用soup.find_all()
遍历所有这些内容:
for tag in soup.find_all("a"):
print(tag.text.strip())
哪个会输出:
6.887711
0.145186
...
答案 1 :(得分:0)
如果您只想获取第一个标记,则可以使用href
差异并使用 regex 来匹配相应的标记;例如,第一个标记的href
以CNY
结尾,使用带有正则表达式re
的{{1}}模块来匹配CNY$
属性:
href
答案 2 :(得分:0)
在这种情况下,您可以考虑使用lxml库,因为它使xpath
可用。
>>> from lxml import etree
>>> import requests
>>> url = 'http://www.x-rates.com/table/?from=USD&amount=1'
>>> HTML = requests.get(url).text
>>> parser = etree.HTMLParser()
>>> tree = etree.fromstring(HTML, parser=parser)
>>> currency = tree.xpath('.//table[2]/tbody/tr[3]/td[1]')
>>> currency[0].text
'Bahraini Dinar'
>>> USDrate = tree.xpath('.//table[2]/tbody/tr[3]/td[3]/a')
>>> USDrate[0].text
'2.652179'
在这种情况下,我找到了第二个表,然后是该表的第三行,然后是该行的第一个和第三个单元格。