python数据抓取3种方法总结


Posted in Python onFebruary 07, 2021

三种数据抓取的方法

  • 正则表达式(re库)
  • BeautifulSoup(bs4)
  • lxml

*利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/为例,获取html。

python数据抓取3种方法总结

from get_html import download

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
page_content = download(url)

*假设我们需要爬取该网页中的国家名称和概况,我们依次使用这三种数据抓取的方法实现数据抓取。

1.正则表达式

from get_html import download
import re

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
page_content = download(url)
country = re.findall('class="h2dabiaoti">(.*?)</h2>', page_content) #注意返回的是list
survey_data = re.findall('<tr><td bgcolor="#FFFFFF" id="wzneirong">(.*?)</td></tr>', page_content)
survey_info_list = re.findall('<p>(.*?)</p>', survey_data[0])
survey_info = ''.join(survey_info_list)
print(country[0],survey_info)

2.BeautifulSoup(bs4)

from get_html import download
from bs4 import BeautifulSoup

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
html = download(url)
#创建 beautifulsoup 对象
soup = BeautifulSoup(html,"html.parser")
#搜索
country = soup.find(attrs={'class':'h2dabiaoti'}).text
survey_info = soup.find(attrs={'id':'wzneirong'}).text
print(country,survey_info)

3.lxml

from get_html import download
from lxml import etree #解析树

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
page_content = download(url)
selector = etree.HTML(page_content)#可进行xpath解析
country_select = selector.xpath('//*[@id="main_content"]/h2') #返回列表
for country in country_select:
 print(country.text)
survey_select = selector.xpath('//*[@id="wzneirong"]/p')
for survey_content in survey_select:
 print(survey_content.text,end='')

运行结果:

python数据抓取3种方法总结

最后,引用《用python写网络爬虫》中对三种方法的性能对比,如下图:

python数据抓取3种方法总结

仅供参考。

总结

到此这篇关于python数据抓取3种方法的文章就介绍到这了,更多相关python数据抓取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现图片变亮或者变暗的方法
Jun 01 Python
Python编程中的异常处理教程
Aug 21 Python
pandas 选择某几列的方法
Jul 03 Python
python实现Zabbix-API监控
Sep 17 Python
python如何实现异步调用函数执行
Jul 08 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
python实时监控logstash日志代码
Apr 27 Python
Python面向对象实现方法总结
Aug 12 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python 批量将中文名转换为拼音
Feb 07 #Python
如何用用Python将地址标记在地图上
Feb 07 #Python
python 三种方法提取pdf中的图片
Feb 07 #Python
Python 转移文件至云对象存储的方法
Feb 07 #Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 #Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 #Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 #Python
You might like
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
python对数组进行反转的方法
2015/05/20 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
全民健身日活动方案
2014/01/29 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
技术负责人任命书
2014/06/05 职场文书
团队激励口号
2014/06/06 职场文书
双拥工作宣传标语
2014/06/26 职场文书
金秋助学感谢信
2015/01/21 职场文书
员工规章制度范本
2015/08/07 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB