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函数缺省值与引用学习笔记分享
Feb 10 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
python实现单链表的方法示例
Sep 03 Python
python无序链表删除重复项的方法
Jan 17 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
python之pygame模块实现飞机大战完整代码
Nov 29 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 Passport 通行证 整合笔记
2008/06/30 PHP
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Python文档生成工具pydoc使用介绍
2015/06/02 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
工作态度检讨书
2014/02/11 职场文书
写给老婆的检讨书
2014/02/21 职场文书
cf战队收人广告词
2014/03/14 职场文书
局火灾防控工作方案
2014/05/25 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
唐山大地震观后感
2015/06/05 职场文书
《法国号》教学反思
2016/02/22 职场文书