用python批量获取微信头像

爬虫新手,第一次写博客。

目前正在实习,最近领导给了我一个excel表格,里面有3000+微信公众号的名字,微信号,让我把他们的头像全部爬下来。

之后打算让我爬阅读量点赞量那些,有点头疼。

现在电脑正在自动爬,闲来无事,写个博客玩玩~


1.我用的python 3.x

2.写代码工具:Notepad++,不得不吐槽一下python的tab和空格之间的关系总是让我很头疼,但还好Notepad++可以自动转换

3.我是从搜狗上爬头像的,这个比较简单,至于阅读量点赞量那些现在不能在搜狗上爬了,文章也只能获取最近十篇。微信反爬做的还挺到位,想反反爬真的不是一般人能做到。


写代码前需要知道这些事~:

1.搜狗搜索微信界面如下:


2.搜狗搜索公众号的链接都是:“http://weixin.sogou.com/weixin?type=1&query=XXX&ie=utf8&s_from=input&_sug_=n&_sug_type_=”,XXX指的是我们要查找的公众号名称或者微信号,一般建议利用微信号来搜索哈。

3.比如我们搜索CSDN公众号,用微信号CSDNnews来搜结果如下,并且只有一个结果:

用python批量获取微信头像_第1张图片

  但有时候可能会出现两个结果:

用python批量获取微信头像_第2张图片

    但通常来说第一个才是正确结果哈~

4.接下来用chrome分析一下网页代码

用python批量获取微信头像_第3张图片

  我们可以发现,这个页面只有一个图片,并且是以这样的方法写的。如果页面有多个结果,就有多个图片了,肿么办?

  前面提到过,一般来说第一个结果才是正确的,所以我们用数组取第一个图片就好。

  这个页面的代码分析比较简单,分析代码是方便我们写正则表达式。

  正则表达式是啥不知道?自己搜去~

5.接下来就是实战了。比如我们要爬几个公众号,在excel中的排版如下:

用python批量获取微信头像_第4张图片

6.代码如下:

#!/usr/bin/python
#coding=utf8 
import urllib.request
import re
import xlrd
import gzip
import time 
#打开EXCEL文件  
excel = xlrd.open_workbook('wechat.xlsx')  
#获取第一个sheet  
sheet = excel.sheets()[0]  
#定义个变量,从第一条数据开始
x=1
while (x<3701):
	#用try,except因为excel中有些微信号没有,会报错,报错就程序就会停止,所以这里让它报错也继续运行。
    try:
		#给出链接,sheet.row_values(x)[3]是指第x行第4列的数据,也就是微信号
        pageurl ="http://weixin.sogou.com/weixin?type=1&query="+str(sheet.row_values(x)[3])+"&ie=utf8&s_from=input&_sug_=n&_sug_type_="
        # 爬虫伪装头部设置,否则容易被限制
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}  
        req = urllib.request.Request(url=pageurl, headers=headers)  
		#打开链接
        Response=urllib.request.urlopen(req)
        Html=Response.read()
        Html=Html.decode('utf-8')
		#正则表达式
        logo=re.compile(r'(?<=

7.这篇文章比较简单,适合新手。本人也还只是个小菜鸡,大神轻拍。有什么问题欢迎交流~~~


===================================2017.08.11更新=========================================

还有一个问题是,爬太多会被禁IP,被要求输入验证码,想破解验证码就比较难了。

不过我们可以降低访问频率,或者更换IP。如果是数据量庞大,推荐后者。

现在有很多免费IP代理,但大部分都不能用,大家耐心寻找吧~

你可能感兴趣的:(用python批量获取微信头像)