本文始发于微信公众号(飓风网络安全):python抓取网页数据的三种方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
聚合网络安全,存储安全技术文章,融合安全最新讯息
一、正则表达式提取网页内容
解析效率:正则表达式>lxml>beautifulsoup
代码:
import re
import 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 num
print "num[1]: ",num[1]
二、BeautifulSoup方法提取网页内容
代码如下:
from bs4 import BeautifulSoup
import 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.text
print "area: ",area
三、lxml
lxml库功能和使用类似BeautifulSoup库,不过lxml解析速度比beautifulsoup快。
代码:
import lxml.html
import urllib2
urllist = 'http://example.webscraping.com/places/default/vie
w/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抓取网页数据的三种方法
评论