您的位置:首页 > 编程语言 > Python开发

python抓取网页数据的三种方法

2017-06-19 20:38 369 查看
一、正则表达式提取网页内容

解析效率:正则表达式>lxml>beautifulsoup代码:
import
reimport
urllib2 urllist
= 'http://example.webscraping.com/places/default/view/United-Kingdom-239' html =
urllib2.urlopen(urllist).read()num =
re.findall('<td class="w2p_fw">(.*?)</td>',html)print
numprint
"num[1]: ",num[1]
二、BeautifulSoup方法提取网页内容代码如下:
from
bs4 import BeautifulSoupimport
urllib2 urllist
= 'http://example.webscraping.com/places/default/view/United-Kingdom-239' html =
urllib2.urlopen(urllist).read()#把html格式进行确定和纠正soup =
BeautifulSoup(html,'html.parser')#找出tr标签中id属性为places_area__row的内容,如果把find改成findall函数则会把匹配所#有的内容显示出来,find函数只匹配第一次匹配的内容。tr =
soup.find('tr',attrs={'id':'places_area__row'})td =
tr.find('td',attrs={'class':'w2p_fw'})#取出标签内容area =
td.textprint
"area: ",area
三、lxmllxml库功能和使用类似BeautifulSoup库,不过lxml解析速度比beautifulsoup快。代码:
import
lxml.htmlimport
urllib2 urllist
= 'http://example.webscraping.com/places/default/view/United-Kingdom-239' html =
urllib2.urlopen(urllist).read()tree =
lxml.html.fromstring(html)td =
tree.cssselect('tr#places_area__row > td.w2p_fw')[0]area =
td.text_content()print
area
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 表达式 import