您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

python3爬取微信文章

2025/3/8 23:34:56发布13次查看
前提:
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 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('“','') 33             title = title.replace('”','') 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爬取微信文章的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product