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完畢!')
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com