Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发
浅谈我对于python的看法
在我眼中,python相较于其他语言,最明显的就是方便,简单。没有复杂的框架,没有眼花缭乱的循环,没有艰深晦涩的报错。写完几百行的代码,换人来仅仅几分钟就可看懂,用到之前自己写的代码也无需再次编写,只要一句简单的import * 即可多次调用。唯一的美中不足就是相对于其他语言处理较慢。
第三方库源
Python用pip安装第三方库的时候经常会出现下载中断,是因为国外下载通道不稳定,一但波动就终止下载,这里我推荐将pip源地址更换为国内地址
阿里云http://mirrors.aliyun.com/pypi/simple/
豆瓣http://pypi.douban.com/simple/
清华大学https://pypi.tuna.tsinghua.edu.cn/simple/
中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/
详细方法访问:https://www.jianshu.com/p/2d74cfa6a754
Python是一种解释型脚本语言,可以应用于以下领域:
Web 和 Internet开发
(1)数据分析
(2)人工智能
(3)桌面界面开发
(4)软件开发
(5)后端开发
(6)网络爬虫
我用的最多的是网络爬虫,本次来讨论一下爬虫
网络爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中,更经常的称为网页追逐者),是按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。
Web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源,很多大型的网络搜索引擎系统都是基于Web数据采集的搜索引擎系统,由此可见Web网络爬虫在搜索引擎中的重要性。在网络爬虫的系统框架中,主过程由控制器、解析器、资源库三部分组成。控制器的主要工作负责给多线程中各个爬虫线程分配工作任务;解析器的主要工作是下载网页,进行网页的处理,处理的内容包括JS脚本标签、CSS代码内容、空格字符、HTML标签等内容。资源库是用来存放下载到的网页资源,-般会采用大型的数据库存储,并对其建立索引。
爬虫和数据分析一样,也可以用第三方库来轻松划学习,常用的库为selenium。Lxml.html,requests,bs4,xpath。在平时上网的时候,每天会经常去光顾一个页面,像我之前就每天起床去看一下全球的疫情数据,但是全世界国家这么多,城市更是数不胜数,一个个页面看过去显然有些耗时间,于是我自己写了一个自动化爬虫,加起来仅两三百行的代码,一键运行即可获取每日疫情数据并且合成表格,打开表格时,我想要的数据引入眼帘一目了然。
爬虫的分类
1.通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。
.
搜索引擎如何抓取互联网上的网站数据?
1.
门户网站主动向搜索引擎公司提供其网站的url
2.
搜索引擎公司与DNS服务商合作,获取网站的url
3.
门户网站主动挂靠在一些知名网站的友情链接中
2.聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。
爬虫的工作原理
先选择初始的url,并经过dns服务器转换获得ip地址。访问到该页面之后,会根据设定好的自动化程序过滤掉和主题不相关的链接,爬取需要的页面或者信息。保存到本地之后,解析内容再进行数据清洗最终得到我们想要的效果。
自动化代码的编写
[if !supportLists](1) [endif]第三方库的导入
我常用python的requests,selenium,lxml.html,xpath,bs4来进行爬取
[if !supportLists](2) [endif]访问url并获取主网页信息
通常我使用get的方式访问网页,访问到网页后根据动静态网页来选择解析方式,以较难的动态网页来就来,driver.get(url)获取到网页源码之后,用这两行代码将字符串形式转换成xpath能解析的html格式
html_source=driver.page_source和
html=lxml.html.fromstring(html_source)
[if !supportLists](3) [endif]数据爬取
获取到html格式的网页源码,根据信息的xpath位置使用html.xpath获取到本地,视情况添加循环语句,进行多次爬取
[if !supportLists](4) [endif]数据清洗
获取到的数据必然会存在很多的缺失值,多余的括号,引号。此时就要用jieba和flatten库进行数据清洗
[if !supportLists](5) [endif]数据储存
获取完所有的信息的最后一步,将信息统计成一个表格,输出到本地文件夹方便打开观看,通常使用的都是pandas库的DataFrame函数:
pd.DataFrame.from_dict(z, orient='index')
再用to_xlsx输出成xlsx表格
df.to_xlsx('1.xlsx',encoding='utf-8-sig')
网络爬虫技术的最新发展
传统的网络爬虫技术主要应刷于抓取静态Web网页,随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题,因为AJAX颠覆了传统的纯HTTP请求/响应协议机制,如果搜索引擎依旧采用“爬”的机制,是无法抓取到AJAX页面的有效数据的AJAX采用了JavaScript 驱动的异步请求/响应机制.以往的爬虫们缺乏avaScript语义上的理解.基本上无法模拟触发JavaScript的异步调用并解析返回的异步回渊逻辑和内容另外.在AJAX的应用中,JavaScript 会对DOM结构进行大量变动,甚至页面所有内容都通过JavaScript直接从服务器端读取并动态绘制出来。这对习惯了DOM结构相对不变的静态页面简直是无法理解的由此可以看出.以往的爬虫是基于协议驱动的,而对于AJAX这样的技术,所需要的爬虫引擎必须是基于事件驱动的。要实现事件驱动,首先需要解决JavaScript的交互分析和解释的问题。