Python-爬虫

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的交互分析和解释的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342