python3之微信文章爬虫

前提:

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可以得到了

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

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

1 search = urllib.request.quote(search)

page是用来循环的

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

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

1 import urllib.request
2     header = (‘User-Agent‘,‘Mozilla/5.0‘)
3     opener = urllib.request.build_opener()
4     opener.addheaders = [header]
5     urllib.request.install_opener(opener)
6     data = urllib.request.urlopen(url).read().decode()

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

1 import re
2     finddata = re.compile(‘<a target="_blank" href="(.*?)".*?uigs="article_title_.*?">(.*?)</a>‘).findall(data)
3     #finddata = [(‘‘,‘‘),(‘‘,‘‘)]

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

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

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

1 title_link.append(link)
2 title_link.append(title)

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

先创建Excel

1 import xlsxwriter
2 workbook = xlsxwriter.Workbook(search+‘.xlsx‘)
3 worksheet = workbook.add_worksheet(‘微信‘)

将title_link中的数据导入Excel

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

完整代码:

 1 ‘‘‘
 2 python3.4 + windows
 3 羽凡-2017/7/11-
 4 用于搜索微信文章,保存标题及链接至Excel中
 5 每个页面10秒延迟,防止被限制
 6 import urllib.request,xlsxwriter,re,time
 7 ‘‘‘
 8 import urllib.request
 9 search = str(input("搜索微信文章:"))
10 pagenum = int(input(‘搜索页数:‘))
11 import xlsxwriter
12 workbook = xlsxwriter.Workbook(search+‘.xlsx‘)
13 search = urllib.request.quote(search)
14 title_link = []
15 for page in range(1,pagenum+1):
16     url = ‘http://weixin.sogou.com/weixin?type=2&query=‘+search+‘&page=‘+str(page)
17     import urllib.request
18     header = (‘User-Agent‘,‘Mozilla/5.0‘)
19     opener = urllib.request.build_opener()
20     opener.addheaders = [header]
21     urllib.request.install_opener(opener)
22     data = urllib.request.urlopen(url).read().decode()
23     import re
24     finddata = re.compile(‘<a target="_blank" href="(.*?)".*?uigs="article_title_.*?">(.*?)</a>‘).findall(data)
25     #finddata = [(‘‘,‘‘),(‘‘,‘‘)]
26     for i in range(len(finddata)):
27         title = finddata[i][1]
28         title = title.replace(‘<em><!--red_beg-->‘,‘‘)
29         title = title.replace(‘<!--red_end--></em>‘,‘‘)
30         try:
31             #标题中可能存在引号
32             title = title.replace(‘&ldquo;‘,‘"‘)
33             title = title.replace(‘&rdquo;‘,‘"‘)
34         except:
35             pass
36         link = finddata[i][0]
37         link = link.replace(‘amp;‘,‘‘)
38         title_link.append(link)
39         title_link.append(title)
40     print(‘第‘+str(page)+‘页‘)
41     import time
42     time.sleep(10)
43 worksheet = workbook.add_worksheet(‘微信‘)
44 worksheet.set_column(‘A:A‘,70)
45 worksheet.set_column(‘C:C‘,100)
46 bold = workbook.add_format({‘bold‘:True})
47 worksheet.write(‘A1‘,‘标题‘,bold)
48 worksheet.write(‘C1‘,‘链接‘,bold)
49 for i in range(0,len(title_link),2):
50     worksheet.write(‘A‘+str(i+1),title_link[i+1])
51     worksheet.write(‘C‘+str(i+1),title_link[i])
52 workbook.close()
53 print(‘导入Excel完毕!‘)
时间: 2025-01-14 17:52:44

python3之微信文章爬虫的相关文章

[Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章

借助搜索微信搜索引擎进行抓取 抓取过程 1.首先在搜狗的微信搜索页面测试一下,这样能够让我们的思路更加清晰 在搜索引擎上使用微信公众号英文名进行“搜公众号”操作(因为公众号英文名是公众号唯一的,而中文名可能会有重复,同时公众号名字一定要完全正确,不然可能搜到很多东西,这样我们可以减少数据的筛选工作, 只要找到这个唯一英文名对应的那条数据即可),即发送请求到'http://weixin.sogou.com/weixin?type=1&query=%s&ie=utf8&_sug_=n&

使用redis所维护的代理池抓取微信文章

搜狗搜索可以直接搜索微信文章,本次就是利用搜狗搜搜出微信文章,获得详细的文章url来得到文章的信息.并把我们感兴趣的内容存入到mongodb中. 因为搜狗搜索微信文章的反爬虫比较强,经常封IP,所以要在封了IP之后切换IP,这里用到github上的一个开源类,当运行这个类时,就会动态的在redis中维护一个ip池,并通过flask映射到网页中,可以通过访问 localhost:5000/get/ 来获取IP 这是搜狗微信搜索的页面, 构造搜索url .搜索时会传递的参数,通过firefox浏览器

使用代理服务器挖掘微信文章代码

使用python3.5对weixin.sogou.com中的微信文章进行文章的爬取,浏览器为火狐浏览器,代理服务器使用fiddler,代码如下 1 import re 2 import urllib.request 3 import time 4 import urllib.error 5 def use_proxy(proxy_addr,url): 6 try: 7 req=urllib.request.Request(url) 8 req.add_header('User-Agent','M

爬取微信文章代码

1 import re 2 import urllib.request 3 import time 4 import urllib.error 5 def use_proxy(proxy_addr,url): 6 try: 7 req=urllib.request.Request(url) 8 req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox

php+mysql的微信文章发布平台

如何在微信上发表丰富图文的文章? 最近在新浪云平台上做了一个php+mysql的微信文章发布平台,丫丫说. 在线编辑文章,扫一扫即可分享到微信,发到朋友圈,非常简单! http://yayashuo.sinaapp.com   欢迎各位试用~

微信公众号和微信文章纳入搜狗百科词条

据海峡经济网消息,搜狗百科宣布整合搜狗微信搜索独有资源,首次将微信公众号及内容纳入词条查询结果,新增深度实用的微信公众号内容知识,更好地满足了用户个性化需求.用户使用搜狗搜索APP.WAP页面查询该关键词时,在搜狗百科词条页面,该词条页面的目录及词条末尾,即可发现“微信文章”和“公众账号”快捷入口. 原文标题:搜狗百科推出特色服务:微信公众号内容纳入词条查询结果,地址在这http://www.hxjjw.com.cn/news/bzgg/20141029/149112.html

如何获取别人微信文章中的图片

有时我们看到别人微信文章中的图片很好看,想保存下来,又或者是我们本身是微信运营者,想"借用"一下别人的图,简单点的做法是在手机微信文章中点击图片,会出现微信图片浏览器,然后点击右上角的三个点点,点击保存到手机.如果电脑要用,就用手机发送给电脑就行,如下图: 但是,如果仅仅这么简单我就不用写这篇文章了!! 关键在于,这样得到的图是经过微信处理过的小图,放大后会失真,那怎么获得大图呢? 试过的人可能知道,将微信文章链接发送到电脑端,然后在电脑浏览器打开文章,右键另存,下载下来的是一个名为&

数据化分析:微信文章不增粉的主要原因

数据化分析:微信文章不增粉的主要原因 2017年10月份,曾经对某公众号文章进行聚类分析. [文章链接] 首先进行多维度数据抓取 进而,我们定义了文章价值指标 第一类:传播力非常强,在一周内传播时效性显著,但粉丝增长度低,且文章具有非常高的价值(对目标用户来说很"值"),同时相应的粉丝也非常活跃: 第二类:文章一周内的传播力较强,粉丝增长量较高,文章的价值度较高,粉丝活跃性良好: 第三类:文章传播效率地,粉丝取关量大,文章价值度低,粉丝活跃性非常差: 第四类:文章传播效率一般,粉丝增长

如何永久保存微信文章

永久保存微信文章方法,本人亲试的有三种: 使用微信的收藏功能 优点:方便,可随时保存缺点:文章被作者删除后,在收藏里也就打不开了 2.手动复制保存到Word文档里优点:可实现永久保存缺点:工作量大,原文章的排版效果不能保证 使用第三方软件保存,比如啄木鸟微信文章助手优点:软件批量采集保存,一分钟可达百篇,导出的格式有word.HTML.pdf,并且文章的视频.音频可同时保存到电脑里,可实现永久保存微信文章缺点:需在电脑端操作,不适合老人和不熟悉电脑操作的人 简单介绍这些,你可以试试那种方法更好用