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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python中为什么要用self探讨
Apr 14 Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
python实现批量按比例缩放图片效果
Mar 30 Python
TensorFlow实现卷积神经网络
May 24 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
php简单操作mysql数据库的类
2015/04/16 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
使用python3.5仿微软记事本notepad
2016/06/15 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
五种Python转义表示法
2020/11/27 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
如何查找网页漏洞
2016/06/22 面试题
中专生学习生活的自我评价分享
2013/10/27 职场文书
最新自我评价范文
2013/11/16 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
夏洛特的网观后感
2015/06/15 职场文书