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之变量和参数
Oct 10 Python
跟老齐学Python之Import 模块
Oct 13 Python
Pycharm学习教程(2) 代码风格
May 02 Python
在centos7中分布式部署pyspider
May 03 Python
python绘制简单折线图代码示例
Dec 19 Python
Python实现按中文排序的方法示例
Apr 25 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
Python3实现建造者模式的示例代码
Jun 28 Python
python 监控logcat关键字功能
Sep 04 Python
如何利用Python 进行边缘检测
Oct 14 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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
星际实力自我测试
2020/03/04 星际争霸
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
美国折扣网站:jClub
2017/08/07 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
一个C/C++编程面试题
2013/11/10 面试题
与UNIX有关的几个名词
2015/09/17 面试题
教师通用专业自荐书范文
2014/02/11 职场文书
企业党员一句话承诺
2014/05/30 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
企业2014年度工作总结
2014/12/10 职场文书
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers