繁体   English   中英

在Python中使用BeautifulSoup进行网络抓取

[英]Webscraping with BeautifulSoup in Python

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英镑对应的行)?

您可以使用此方法直接直接获得前一个£2.00的价格。

首先找到所需的表,然后在其中找到带有Landlinetd作为字符串。 然后获取此td的父级,获取此td的下一个同级,最后获取下一个同级。

>>> import requests
>>> get = requests.get('http://international.o2.co.uk/internationaltariffs/getintlcallcosts?countryId=IND')
>>> page = get.text
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(page,'lxml')
>>> Landline_td = soup.find('table', {'id': 'standardRatesTable'}).find_all(string='Landline')[0]
>>> Landline_td
'Landline'
>>> Landline_td.findParent().findNextSibling()
<td>£2.00</td>
>>> Landline_td.findParent().findNextSibling().text
'£2.00'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM