一个爬虫小技巧

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 一个爬虫小技巧

爬虫小技巧

首先问一下大家都使用过哪些python爬虫模块呢?相信大多数人会回复requests或者scrapy吧,嗯我是说大多人。但是针对简单的爬虫我们还是习惯性的使用requests吧,或者升级版的requests_html,此时再使用scrapy,就有种杀鸡焉用宰牛刀的意味了。

现在我们有个简单的要求,去获取该网页http://www.air-level.com/air/beijing/的一个表格数据,然后保存起来。
相信此时很多人应该拿起requests敲起来了吧。这里由于代码比较简单就说下思路。
首先,我们要成功访问该网页,然后解析网页表格里面的内容,然后存储数据,这里简单我们就存csv好了。好了思路好了我们就可以写自己代码了,如果对xpath解析数据不很熟悉,应该会稍微耗点时,人生苦短,对于这么简单的任务怎么能浪费过多的时间呢?

经过调查我找到了应对这种静态单页面的更好的方法。。。

pandas模块

简介

提到pandas更多联想到也许是它的数据分析功能,但是在查它的api的时候我发现了这个方法
read_html:
下面是这个函数及其参数

pandas.read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, tupleize_cols=None, thousands=', ', encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True, displayed_only=True)

https://pandas.pydata.org/**

安装

pip3 install pandas

爬虫代码

import pandas as pd
df = pd.read_html("http://www.air-level.com/air/beijing/", encoding='utf-8',header=0)[0]
results = df.T.to_dict().values()

print(results)

然后我们看到输出一个mapping映射类型的数据

dict_values([{'监测站': '北京天坛', 'AQI': 177, '空气质量等级': '中度污染', 'PM2.5': '134 μg/m3', 'PM10': '176 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京顺义新城', 'AQI': 167, '空气质量等级': '中度污染', 'PM2.5': '127 μg/m3', 'PM10': '163 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京农展馆', 'AQI': 155, '空气质量等级': '中度污染', 'PM2.5': '118 μg/m3', 'PM10': '170 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京奥体中心', 'AQI': 152, '空气质量等级': '中度污染', 'PM2.5': '116 μg/m3', 'PM10': '132 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京东四', 'AQI': 150, '空气质量等级': '轻度污染', 'PM2.5': '115 μg/m3', 'PM10': '145 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京海淀区万柳', 'AQI': 142, '空气质量等级': '轻度污染', 'PM2.5': '109 μg/m3', 'PM10': '143 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京万寿西宫', 'AQI': 142, '空气质量等级': '轻度污染', 'PM2.5': '109 μg/m3', 'PM10': '143 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京古城', 'AQI': 137, '空气质量等级': '轻度污染', 'PM2.5': '105 μg/m3', 'PM10': '120 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京官园', 'AQI': 137, '空气质量等级': '轻度污染', 'PM2.5': '105 μg/m3', 'PM10': '144 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京怀柔镇', 'AQI': 121, '空气质量等级': '轻度污染', 'PM2.5': '92 μg/m3', 'PM10': '143 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京定陵', 'AQI': 114, '空气质量等级': '轻度污染', 'PM2.5': '86 μg/m3', 'PM10': '92 μg/m3', '首要污染物': 'PM2.5'}, {'监测站': '北京昌平镇', 'AQI': 104, '空气质量等级': '轻度污染', 'PM2.5': '78 μg/m3', 'PM10': '109 μg/m3', '首要污染物': 'PM2.5'}])

代码很简单但是实现的内容可不简单,第一行导入pandas包,
第二行的read_html核心功能实现是调用requests然后解析table标签里的每个td的数据
最后生成一个list对象里面是dataframe对象。所以通过小标0获取它的第一个dataframe数据,既然是dateframe我们就可以使用dataframe的方法了,
第三行首先做了个转秩操作,然后转为映射类型打印出来了。上面的代码为了演示其效果,下面我们对结果做一个存储操作

存入csv

df = pd.read_html("http://www.air-level.com/air/beijing/", encoding='utf-8',header=0)[0]
df.to_csv("tq.csv",index=False)

执行代码之后就生成了tq.csv了,打开时候看正是我们要的数据。
让我们对比一下这是网页的数据:
网页内容
这是我们保存的csv数据
csv数据
可以发现我们成功的获取了网页表格的数据。

需要注意的是,read_html只能解析静态页面。

怎么样,简单不,赶紧动手试一试吧。

同步来源:微信公众号python学习开发
博客园:http://www.cnblogs.com/c-x-a

目录
相关文章
|
数据采集 XML 存储
Python爬虫在学习中整理的一些小技巧
如果你对工作不满意或对生活不满意,请不用抱怨,因为毫无用处,你只有努力提升技能,努力的完善自己,不断地向前奔跑,才会越来越好的!
|
数据采集 Shell Python
关于Scrapy爬虫项目运行和调试的小技巧(下篇)
前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下。今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧。 三、设置网站robots.txt规则为False 一般的,我们在运用Scrapy框架抓取数据之前,需要提前到settings.py文件中,将“ROBOTSTXT_OBEY = True”改为ROBOTSTXT_OBEY = False。
1203 0
|
数据采集 Python
关于Scrapy爬虫项目运行和调试的小技巧(上篇)
扫除运行Scrapy爬虫程序的bug之后,现在便可以开始进行编写爬虫逻辑了。在正式开始爬虫编写之前,在这里介绍四种小技巧,可以方便我们操纵和调试爬虫。 一、建立main.py文件,直接在Pycharm下进行调试     很多时候我们在使用Scrapy爬虫框架的时候,如果想运行Scrapy爬虫项目的话,一般都会想着去命令行中直接执行命令“scrapy crawl crawler_name”,其中crawler_name指的是爬虫的名字,在一开始创建Scrapy爬虫模板的时候就指定了的,而且在该爬虫项目中具有唯一性。
1726 0
|
25天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
73 6
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
192 4
|
4月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
5月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
84 4
|
2月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
193 66
|
23天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
26天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
53 4