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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python入门篇之字典
Oct 17 Python
Python画图学习入门教程
Jul 01 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Python检测数据类型的方法总结
May 20 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 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递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
Python的面向对象思想分析
2015/01/14 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
使用python接入微信聊天机器人
2020/03/31 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python读取yaml文件的详细教程
2020/07/21 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
文明村创建实施方案
2014/03/27 职场文书
党委班子对照检查材料
2014/08/19 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL