【发布时间】:2017-02-24 16:02:38
【问题描述】:
resp = urlopen('http://international.o2.co.uk/internationaltariffs
/getintlcallcosts?countryId=IND').read()
crawler = bs4.BeautifulSoup(resp, 'html.parser')
div = crawler.find('div', {"id": "standardRates"})
div
使用上面的代码,它列出了您可以在图像中看到的所有标签/元素。我想得到“2.00 英镑”。除非我再次调用 .find('td') 如下:
div = crawler.find('div', {"id": "standardRates"}).find('td')
它只返回 Landline 而不是下面的行,即使它具有相同的标签。我在网络抓取方面的经验很少。我如何定位这个标签(2.00 英镑的行)?
【问题讨论】:
-
试试
findAll()而不是find() -
.findAll('td')[1]准确地说 -
效果很好。虽然结果是一个列表,所以当我使用 .contents 时,字符串被方括号括起来。我可以得到它,所以它只是一个字符串?
-
这是现在的代码行: div = crawler.find('div', {"id": "standardRates"}).findAll('td')[1].contents 和它返回 ['£2.00']
-
我只是使用 .join 它不是那么优雅,但可以完成工作。感谢您的有用回复!
标签: python web-scraping beautifulsoup