python爬微信文章

 1 #http://weiixn.sogou.com
 2 import re
 3 import urllib.request
 4 import time
 5 import urllib.error
 6 
 7 #自定义函数,功能为使用代理服务器爬一个网址
 8 def use_proxy(proxy_addr,url):
 9     try:
10         #伪装浏览器报头
11         print(str("伪装成浏览器"))
12         req=urllib.request.Request(url)
13         req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36')
14         #代理服务器
15         print(str("代理服务器"))
16         proxy=urllib.request.ProxyHandler({'http':proxy_addr})
17         #设置代理服务器opener对象
18         print(str("设置opener对象"))
19         opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
20         #设置全局变量
21         print(str("全局变量"))
22         urllib.request.install_opener(opener)
23         print(str("读数据"))
24         data=urllib.request.urlopen(req).read()
25         print(str("读取成功"))
26         return data
27     except urllib.error.URLError as e:
28         if hasattr(e,"code"):
29             print(e.code)
30         if hasattr(e,"reason"):
31             print(e.reason)
32         #若为URLError异常,延时10秒执行
33         time.sleep(10)
34     except Exception as e:
35         print("exception:"+str(e))
36         #若为Exception异常,延时1秒执行
37         time.sleep(1)
38         
39     
40 #设置关键词
41 key="Python"
42 #设置代理服务器,该代理服务器有可能失效,及时更换
43 proxy="114.113.126.86:80"
44 #爬多少页
45 for i in range(1,3):
46     key=urllib.request.quote(key)
47     print(str("进入链接"))
48     thispageurl="http://weixin.sogou.com/weixin?query="+key+"&type=2&page="+str(i)
49     thispagedata=use_proxy(proxy,thispageurl)
50     print(len(str(thispagedata)))
51     pat1='<a href="(.*?)"'
52     rs1=re.compile(pat1,re.S).findall(str(thispagedata))
53     if(len(rs1)==0):
54         print("此次("+str(i)+"页)没成功")
55         continue
56     for j in range(0,len(rs1)):
57         thisurl=rs1[j]
58         thisurl=thisurl.replace("amp;","")
59         file="F:/python/python爬虫/weixin/"+str(i)+"页第"+str(j)+"篇文章.html"
60         thisdata=use_proxy(proxy,thisurl)
61         try:
62             fh=open(file,"wb")
63             fh.write(thisdata)
64             fh.close()
65             print(""+str(i)+"页第"+str(j)+"篇文章成功")
66         except Exception as e:
67             print(e)
68             print(""+str(i)+"页第"+str(j)+"篇文章失败")

 本代码爬取前两页微信文章

注意:

1.代理服务器应即使更换,防止网站屏蔽

2.伪装浏览器类型:Chrome

posted @ 2018-09-18 18:03  发酸的丶蛋炒饭  阅读(436)  评论(0编辑  收藏  举报