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函数的周期性执行实现方法
Aug 13 Python
Python科学画图代码分享
Nov 29 Python
Tensorflow卷积神经网络实例进阶
May 24 Python
Python定义函数功能与用法实例详解
Apr 08 Python
Python中psutil的介绍与用法
May 02 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python如何发送与接收大型数组
Aug 07 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
python使用smtplib模块发送邮件
Dec 17 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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
ThinkPHP分页类使用详解
2014/03/05 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
node跨域请求方法小结
2017/08/25 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
护士辞职信模板
2014/01/20 职场文书
银行求职自荐信
2014/06/30 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js
Java 异步任务计算FutureTask
2022/04/28 Java/Android
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis