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实现PS滤镜的万花筒效果示例
Jan 23 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Python更换pip源方法过程解析
May 19 Python
Python常用数据分析模块原理解析
Jul 20 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
利用Python实现模拟登录知乎
May 25 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实现rc4加密算法代码
2012/04/25 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
xml和web特殊字符
2009/04/28 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
前台岗位职责
2015/02/13 职场文书
解除合同协议书范本
2016/03/21 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis