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读写Excel文件的实例
Nov 01 Python
python缩进区别分析
Feb 15 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
python如何通过twisted实现数据库异步插入
Mar 20 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
Python3多线程基础知识点
Feb 19 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
Django实现列表页商品数据返回教程
Apr 03 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
js编写简易的计算器
2020/07/29 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python如何实现excel数据添加到mongodb
2015/07/30 Python
python3中int(整型)的使用教程
2017/03/23 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
Python运算符+与+=的方法实例
2021/02/18 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
日语专业个人的求职信
2013/12/03 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
个人评语大全
2014/05/04 职场文书
班组建设经验交流材料
2014/05/12 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
5行Python代码实现一键批量扣图
2021/06/29 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript