python3之微信文章爬虫实例讲解


Posted in Python onJuly 12, 2017

前提:

python3.4

windows

作用:通过搜狗的微信搜索接口http://weixin.sogou.com/来搜索相关微信文章,并将标题及相关链接导入Excel表格中

说明:需xlsxwriter模块,另程序编写时间为2017/7/11,以免之后程序无法使用可能是网站做过相关改变,程序较为简单,除去注释40多行。

正题:

思路:打开初始Url --> 正则获取标题及链接 --> 改变page循环第二步 --> 将得到的标题及链接导入Excel

爬虫的第一步都是先手工操作一遍(闲话)

进入上面提到的网址,如输入:“图片识别”,搜索,网址变为“http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BE%E7%89%87%E8%AF%86%E5%88%AB&ie=utf8&s_from=input&_sug_=n&_sug_type_=1&w=01015002&oq=&ri=4&sourceid=sugg&sut=0&sst0=1499778531195&lkt=0%2C0%2C0&p=40040108”标红为重要参数,type=1时是搜索公众号,暂且不管,query=‘搜索关键词',关键词已经被编码,还有一个隐藏参数page=1

当你跳到第二页时可以看到“http://weixin.sogou.com/weixin?oq=&query=%E5%9B%BE%E7%89%87%E8%AF%86%E5%88%AB&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=4&_sug_=n&type=2&sst0=1499778531195&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1”

好了,url可以得到了

url = 'http://weixin.sogou.com/weixin?type=2&query='+search+'&page='+str(page)

search是要搜索的关键词,用quote()编码即可插入

search = urllib.request.quote(search)

page是用来循环的

for page in range(1,pagenum+1):
 url = 'http://weixin.sogou.com/weixin?type=2&query='+search+'&page='+str(page)

完整的url已经得到了,接下来访问url,获得其中的数据(创建opener对象,添加header())

import urllib.request
 header = ('User-Agent','Mozilla/5.0')
 opener = urllib.request.build_opener()
 opener.addheaders = [header]
 urllib.request.install_opener(opener)
 data = urllib.request.urlopen(url).read().decode()

得到页面内容,采用正则表达获取相关数据

import re
  finddata = re.compile('<a target="_blank" href="(.*?)" rel="external nofollow" rel="external nofollow" .*?uigs="article_title_.*?">(.*?)</a>').findall(data)
  #finddata = [('',''),('','')]

通过正则获取的数据中存在干扰项(链接:‘amp;')和无关项(标题:'<em><...><....></em>'),用replace()解决

title = title.replace('<em><!--red_beg-->','')
 title = title.replace('<!--red_end--></em>','')
 link = link.replace('amp;','')

将处理后的标题和链接保存在列表中

title_link.append(link)
 title_link.append(title)

如此搜索的标题和链接都得到了,接下来导入Excel

先创建Excel

import xlsxwriter
 workbook = xlsxwriter.Workbook(search+'.xlsx')
 worksheet = workbook.add_worksheet('微信')

将title_link中的数据导入Excel

for i in range(0,len(title_link),2):
  worksheet.write('A'+str(i+1),title_link[i+1])
  worksheet.write('C'+str(i+1),title_link[i])
 workbook.close()

完整代码:

'''
python3.4 + windows
羽凡-2017/7/11-
用于搜索微信文章,保存标题及链接至Excel中
每个页面10秒延迟,防止被限制
import urllib.request,xlsxwriter,re,time
'''
import urllib.request
search = str(input("搜索微信文章:"))
pagenum = int(input('搜索页数:'))
import xlsxwriter
workbook = xlsxwriter.Workbook(search+'.xlsx')
search = urllib.request.quote(search)
title_link = []
for page in range(1,pagenum+1):
 url = 'http://weixin.sogou.com/weixin?type=2&query='+search+'&page='+str(page)
 import urllib.request
 header = ('User-Agent','Mozilla/5.0')
 opener = urllib.request.build_opener()
 opener.addheaders = [header]
 urllib.request.install_opener(opener)
 data = urllib.request.urlopen(url).read().decode()
 import re
 finddata = re.compile('<a target="_blank" href="(.*?)" rel="external nofollow" rel="external nofollow" .*?uigs="article_title_.*?">(.*?)</a>').findall(data)
 #finddata = [('',''),('','')]
 for i in range(len(finddata)):
  title = finddata[i][1]
  title = title.replace('<em><!--red_beg-->','')
  title = title.replace('<!--red_end--></em>','')
  try:
   #标题中可能存在引号
   title = title.replace('“','"')
   title = title.replace('”','"')
  except:
   pass
  link = finddata[i][0]
  link = link.replace('amp;','')
  title_link.append(link)
  title_link.append(title)
 print('第'+str(page)+'页')
 import time
 time.sleep(10)
worksheet = workbook.add_worksheet('微信')
worksheet.set_column('A:A',70)
worksheet.set_column('C:C',100)
bold = workbook.add_format({'bold':True})
worksheet.write('A1','标题',bold)
worksheet.write('C1','链接',bold)
for i in range(0,len(title_link),2):
 worksheet.write('A'+str(i+1),title_link[i+1])
 worksheet.write('C'+str(i+1),title_link[i])
workbook.close()
print('导入Excel完毕!')

以上这篇python3之微信文章爬虫实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之常用运算符
Aug 29 Python
Python中__call__用法实例
Aug 29 Python
Python实现Linux的find命令实例分享
Jun 04 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
Python requests发送post请求的一些疑点
May 20 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
python 创建一维的0向量实例
Dec 02 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
python脚本替换指定行实现步骤
Jul 11 #Python
Python书单 不将就
Jul 11 #Python
Python编写一个闹钟功能
Jul 11 #Python
python自定义异常实例详解
Jul 11 #Python
详解python中的文件与目录操作
Jul 11 #Python
python 系统调用的实例详解
Jul 11 #Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 #Python
You might like
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
Node.js使用Express.Router的方法
2017/11/14 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
python实现Windows电脑定时关机
2018/06/20 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
母婴店促销方案
2014/03/05 职场文书
高中生班主任评语
2014/04/25 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
公司开业主持词
2015/07/02 职场文书