一.爬虫介绍

     网络爬虫(web crawler),按照规则,自动抓取网络上的信息或者脚本。搜索引擎大量使用爬虫,爬取整个互联网的内容,可搜索引擎搜到的东西覆盖面广,检索出来的东西往往不是自己所需要的,利用爬虫进行选择访问和定向访问,例如,爬虫可以爬取微信聊天信息,10w知乎用户的最多回复帖子,从而判断知乎上的用户最感兴趣什么内容,只爬取网上的图片,而忽略其他信息。

二.爬虫思路

我们知道,每一个网页都是一个HTML文档,HTML的写法极为规范,有<html><head><body>等组成,我们通过我们的浏览器访问网页,通过HTTP协议,对这个网页发出访问请求,网页返回给你一个HTML文档,所以我们要做的就是假装模拟浏览器,向网站发送请求,网站回给我们HTML文档,我们从中抽取我们想要的内容。

三.爬虫函数

    urllib库

import urllib.request
            >>> response = urllib.request.urlopen("http://www.fishc.com")
            >>> html = response.read()
            >>> print(html)

     我们利用idle编写python函数,首先导入urllib库,可以看到,这个库里面有4个函数,我们现在只需要用到第一个,所以导入

   

python 获取聊天群成员和聊天记录 python爬虫聊天记录_HTML

urllib.request这个函数,urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应,如果我们要想模拟浏览器发送GET请求,就需要使用Request对象,通过往Request对象添加HTTP头,我们就可以把请求伪装成浏览器。至于这个函数的具体解释,想知道的同学可以去看ptyhon的API。

上面的代码用了request.urlopen函数,用来打开http网页,直接print,就可以得到一篇html文档。

import urllib.request
 req = urllib.request.Request("http://placekitten.com")
 response = urllib.request.urlopen(req)
 print (response.read())

上面的代码和之前那的代码作用是一样的,只不过我们在这里用到了Request函数去访问HTTP,效果是一样的,其中response.read()函数是将这个网页里面的内容读出来。

response的方法

response.geturl(),得到当前http的地址,

response.info(),可以print(response.info()),

response.getcode()得到值是200,表示ok,当前访问没有问题

四.隐藏自己

我们知道,我们利用爬虫去访问网页的时候,是机器自己去访问,不需要人工控制,而对于网页来说,网页不喜欢机器人来访问自己,所以有时就会偶尔弹出验证码,验证操作,来验证当前是否为人类,网页是通过请求head信息来判断的。

所以我们只能让自己装得更像浏览器,我们的办法是对User-agent进行包装,我们在代码上面添加一个head头部

head = {}
head['User-Agent'] = 'user-agent’,其中单引号里面填入要爬取网页的user-agent,单击审查元素,点击network即可出现,

下面我给出爬取有道翻译的简单爬虫

python 获取聊天群成员和聊天记录 python爬虫聊天记录_HTML_02

我们还可以爬取图片,例如,我根据小甲鱼的介绍,爬取了网站上的图片

import urllib.request
req = urllib.request.Request('http://placekitten.com/500/600')
 response = urllib.request.urlopen(req)
 cat_img = response.read()with open('cat_500_600.jpg','wb') as f:
     f.write(cat_img)

我们利用了with open 和write函数,我们怕去了网站的图片.