爬取网页后的抓取数据_3种抓取网页数据方法

本文介绍了爬取网页数据的两种常见方法:正则表达式和Lxml库。详细讲解了正则表达式的使用,并对比了两者在处理效率和效果上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 正则表达式

(1)

re.findall('<tr id="places_area__row">.*?<td\s*class=["\']w2p_fw["\']>(.*?)</td>', html)

(2)

import re
pattern = re.compile("hello")
#match_list = re.findall(pattern, "hello world! hello") 这个是找全部匹配的,返回列表
match = pattern.match("hello world! hello") #这个是找匹配的,有就返回一个,没有返回None
print(match)

2. BeautifulSoup(bs4)
转Python中使用Beautiful Soup库的超详细教程:http://www.jb51.net/article/65287.htm
from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(html, "html.parser")    #用html解释器对得到的html文本进行解析
>>> tr = soup.find(attrs={"id":"places_area__row"})
>>> tr
<tr id="places_area__row"><td class="w2p_fl"><label for="places_area" id="places_area__label">Area: </label></td><td class="w2p_fw">244,820 square kilometres</td><td class="w2p_fc"></td></tr>
>>> td = tr.find(attrs={"class":"w2p_fw"})
>>> td
<td class="w2p_fw">244,820 square kilometres</td>
>>> area = td.text
>>> print(area)
244,820 square kilometres
3. Lxml
Lxml 是基于libxml2这一XML解析库的Python封装,该模块使用C语言编写,解析速度比BeautifulSoup更快。经过书中比较分析得出的结论,爬取网页后抓取数据的一般的步骤为:先解析网页源码(用这3种方法中的lxml),再选择抓取数据(css选择器)
#先解析网页源码(lxml)示例
import lxml.html
broken_html = "<ul class=country><li>Area<li>Population</ul>"
tree = lxml.html.fromstring(broken_html)  #解析已经完成
fixed_html = lxml.html.tostring(tree, pretty_print=True)  
print(fixed_html)

#output
#b'<ul class="country">\n<li>Area</li>\n<li>Population</li>\n</ul>\n'
#解析网页源码(lxml)后使用css选择器提取目标信息
import lxml.html
import cssselect
html = download("http://example.webscraping.com/view/Aland-Islands-2") #下载网页
html = str(html)
tree = lxml.html.fromstring(html)  #解析已经完成
td = tree.cssselect("tr#places_area__row > td.w2p_fw")[0]  #选择id="plac..."名为tr的标签下的,class="w2p..."名为td的标签中[0]元素
area = td.text_content()   #目标信息area值为td标签中的text信息
print(area)


以上三种方法性能对比与结论:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值