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 HTMLParser模块解析html获取url实例
Apr 08 Python
python实现实时监控文件的方法
Aug 26 Python
利用Python获取操作系统信息实例
Sep 02 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
Python安装pycurl失败的解决方法
Oct 15 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
python实现五子棋人机对战游戏
Mar 25 Python
python 动态迁移solr数据过程解析
Sep 04 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
Python 多进程、多线程效率对比
Nov 19 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学习笔记之面向对象编程
2012/12/29 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JS功能代码集锦
2016/05/04 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
PyMongo安装使用笔记
2015/04/27 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python-接口开发入门解析
2019/08/01 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python读取ini配置文件过程示范
2019/12/23 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
python爬虫 requests-html的使用
2020/11/30 Python
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
幼儿园大班教学反思
2014/02/10 职场文书
党员干部承诺书范文
2014/03/25 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL