首頁  >  文章  >  後端開發  >  python3爬取微信文章

python3爬取微信文章

巴扎黑
巴扎黑原創
2017-07-21 13:46:321543瀏覽

前提:

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;')和無關項(標題:'<...><....>'),用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完毕!')

 

#

以上是python3爬取微信文章的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn