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自定义异常实例详解
Jul 11 Python
对Python中数组的几种使用方法总结
Jun 28 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
PHP eval函数使用介绍
2013/12/08 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
基于Python的接口测试框架实例
2016/11/04 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
三查三看党性分析材料
2014/02/18 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
公司授权委托书
2014/10/17 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
Hive常用日期格式转换语法
2022/06/25 数据库