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编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
教你学会使用Python正则表达式
Sep 07 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
python自动发送邮件脚本
Jun 20 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
python tkinter图形界面代码统计工具
Sep 18 Python
使用turtle绘制五角星、分形树
Oct 06 Python
详解Python绘图Turtle库
Oct 12 Python
python3 配置logging日志类的操作
Apr 08 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
python属于软件吗
Jun 18 Python
Python变量及数据类型用法原理汇总
Aug 06 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加密解密函数代码
2013/06/19 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
取得父标签
2006/11/14 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
python3.5绘制随机漫步图
2018/08/27 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
甜美蛋糕店创业计划书
2014/01/30 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
村级四风对照检查材料
2014/08/24 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python