python3爬取微信文章


本文摘自php中文网,作者巴扎黑,侵删。

前提:

python3.4

windows

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

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

正题:

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

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

进入上面提到的网址,如输入:“图片识别”,搜索,网址变为“”标红为重要参数,type=1时是搜索公众号,暂且不管,query=‘搜索关键词’,关键词已经被编码,还有一个隐藏参数page=1

当你跳到第二页时可以看到“”

好了,url可以得到了

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

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

1

1 search = urllib.request.quote(search)

page是用来循环的

1

2

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

2

3

4

5

6

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

2

3

1 import re

2     finddata = re.compile('<a target="_blank" href="(.*?)".*?uigs="article_title_.*?">(.*?)</a>').findall(data)

3     #finddata = [('',''),('','')]

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

1

2

1 title = title.replace('<em><!--red_beg-->','')

2 title = title.replace('<!--red_end--></em>','')

1

1 link = link.replace('amp;','')

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

1

2

1 title_link.append(link)

2 title_link.append(title)

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

先创建Excel

1

2

1 import xlsxwriter

2 workbook = xlsxwriter.Workbook(search+'.xlsx')

1

3 worksheet = workbook.add_worksheet('微信')

将title_link中的数据导入Excel

1

2

3

4

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

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

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完毕!')

以上就是python3爬取微信文章的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

利用Python执行shell脚本 并动态传参 及subprocess基本使用

pygame制作游戏人物精灵的行走及二段跳实现方法

django是什么

业余学Python有用吗

Python 杨辉三角方法的实例介绍

Python解释器的提示符是什么

Python怎么调用api实现智能回复功能

Python中关于range与xrange探究详解

Python如何安装jieba库

Python中出现"indentationerror: unexpected indent"错误的解决

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...