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实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
详解python中xlrd包的安装与处理Excel表格
Dec 16 Python
Python的argparse库使用详解
Oct 09 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 Python
python能做哪些生活有趣的事情
Sep 09 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
python IP地址转整数
Nov 20 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Python关于拓扑排序知识点讲解
Jan 04 Python
Flask处理Web表单的实现方法
Jan 31 Python
基于flask实现五子棋小游戏
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 静态化实现代码
2009/03/20 PHP
php对数组排序的简单实例
2013/12/25 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
PHP实现的策略模式示例
2019/03/20 PHP
javascript 获取图片颜色
2009/04/05 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
OpenCV实现人脸识别
2017/04/07 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python ini文件常用操作方法解析
2020/04/26 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
统计系教授推荐信
2014/02/28 职场文书
小学老师寄语大全
2014/04/04 职场文书
学校志愿者活动总结
2014/06/27 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
2016新年晚会开场白
2015/12/03 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA