国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

python爬取網易評論

2019-11-14 16:57:28
字體:
來源:轉載
供稿:網友

學習python不久,最近爬的網頁都是直接源代碼中直接就有的,看到網易新聞的評論時,發現評論時以json格式加載的.....

爬的網頁是習大大2015訪英的評論頁http://comment.news.163.com/news_guonei8_bbs/SPEC0001B60046CG.html

步驟如下:

1.使用谷歌瀏覽器分析網頁首頁加載的數據

 打開網頁----按下F12----點擊Network,此時是空的

刷新以后,會出現如下圖:(我以前加載過頁面,所以json數據顯示的不全)

點擊其中的一個json格式的文件,找到url,并在網頁中打開,看看是不是自己想要的數據:

我第一次訪問網頁的時候打了三個,只有一個是并論的內容,首頁的網址為:

http://comment.news.163.com/data/news_guonei8_bbs/df/SPEC0001B60046CG_1.html?_=14455959217790 

數據為:

2.其他評論頁

在點擊其他評論頁時,先點擊一下Network中的清除按鈕,方便查找json---從第二頁開始觀察,幾乎都一樣

點擊找到url,并在瀏覽器中打開

數據雖然是亂碼的,在Python中讀取到的是可以正常查看的

 

3.網址規律

一開始以為網址后面的有什么規律,后來發現去掉也沒影響,

所以只要把頁數換成對應的評論頁就好了(我只能打開34頁??)

4.代碼

注:由于數據開始有變量名,結尾有分號,在使用json.loads(data)時報錯,所以先對數據進行處理

 1 # encoding=utf-8 2  3 import urllib2 4 import json 5 import re 6 import time 7 class JSON(): 8     def __init__(self): 9         self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'10         self.headers={'User-Agent':self.user_agent}11         self.url1='http://comment.news.163.com/data/news_guonei8_bbs/df/SPEC0001B60046CG_1.html'12     def getUrls(self,pageIndex):13         url2='http://comment.news.163.com/cache/newlist/news_guonei8_bbs/SPEC0001B60046CG_'+str(pageIndex)+'.html'14         return url215     def getHtml(self,url):16         try:17             request=urllib2.Request(url,headers=self.headers)18             respone=urllib2.urlopen(request)19             html=respone.read()20             return html21         except urllib2.URLError,e:22             if hasattr(e,'reason'):23                 PRint u"連接失敗",e.reason24                 return  None25     #處理字符串,沒有處理干凈的可以再打開文件進行處理26     def strDeal(self,data,pageIndex):27         if pageIndex==1:28             data=data.replace('var replyData=','')29         else:30             data=data.replace('var newPostList=','')31         reg=re.compile("&nbsp;/[<a href=''>")32         data=reg.sub('--',data)33         reg2=re.compile('<////a>/]')#<//a>]的正則?34         data=reg2.sub('',data)35         reg3=re.compile('<br>')36         data=reg3.sub('',data)37         return data38     #解析json數據并存入文件39     def parserJson(self):40         with open('wangyi2.txt','a') as f:41             f.write('用戶ID'+'|'+'評論'+'|'+'點贊數'+'/n')42         for i in range(1,35):43             if i==1:44                 url=self.url145                 data=self.getHtml(url)46                 data=self.strDeal(data,i)[:-1]47                 value=json.loads(data)48                 f=open('wangyi2.txt','a')49 50                 for item in value['hotPosts']:51                     f.write(item['1']['f'].encode('utf-8')+'|')52                     f.write(item['1']['b'].encode('utf-8')+'|')53                     f.write(item['1']['v'].encode('utf-8')+'/n')54                 f.close()55                 print 'sleeping pageload %d/34'%i56                 time.sleep(6)57             else:58                 url=self.getUrls(i)59                 data=self.getHtml(url)60                 data=self.strDeal(data,i)[:-2]61                 # 轉換,一開始得到的數據類型為str,使用json.loads()函數,得到原始數據,此時的value的數據類型為dict,接下來就可以正常訪問字典了。62                 value=json.loads(data)63                 f=open('wangyi2.txt','a')64 65                 for item in value['newPosts']:66                     f.write(item['1']['f'].encode('utf-8')+'|')67                     f.write(item['1']['b'].encode('utf-8')+'|')68                     f.write(item['1']['v'].encode('utf-8')+'/n')69 70                 f.close()71                 print 'sleeping pageload %d/34'%i72                 time.sleep(6)73 74 75 js=JSON()76 js.parserJson()

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 耿马| 保定市| 红原县| 文安县| 常德市| 天祝| 牙克石市| 娱乐| 泽州县| 新安县| 太康县| 阜新| 古蔺县| 南康市| 会东县| 上蔡县| 法库县| 舟曲县| 潞西市| 浪卡子县| 鲁山县| 体育| 兖州市| 聂荣县| 大石桥市| 西和县| 兴宁市| 花莲市| 石林| 霍邱县| 肥西县| 镇江市| 陆丰市| 林口县| 济阳县| 定南县| 交城县| 晋江市| 南靖县| 东海县| 社旗县|