Python數(shù)據(jù)爬取實例--爬取京東商品評論

一杨赤、前言

有了之前爬取淘寶評論的基礎,我想如果換個URL和cookie等參數(shù)是不是一套一個準,然后就跑去京東測試了一下风皿,結果失敗了!因為頁面編碼不一樣所以爬取淘寶所用的正則化提取評論在京東是實現(xiàn)不了的匠璧,這個下面會重點介紹桐款。
京東的反爬比淘寶要低一點,所以在利用requests爬取網頁內容也可以不用提供那么多參數(shù)夷恍,可以自己試一下魔眨,我還是按照上次的代碼提供了URL和headers。

二酿雪、代碼

因為步驟大部分都一樣遏暴,所以具體步驟(參考上次的爬取淘寶)就不細講,直接說不一樣的地方指黎!
URL根據(jù)具體情況修改拓挥,我瀏覽了多頁評論復制其URL后發(fā)現(xiàn),控制頁面的是page這個參數(shù)袋励,所以我在這里斷開侥啤!

import pandas as pd
import requests
import time
import json
data_list = []
#爬取的頁數(shù)為2頁,我只是測試能否成功就沒爬太多不然浪費時間茬故!參數(shù)可以自己設置
for i in range(1,2,1):
    print("正在爬取第" + str(i) + "頁")
    #構建訪問的網址盖灸,這個網址可有講究了
    first = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100007299145&score=0&sortType=5&page='
    last = '&pageSize=10&isShadowSku=0&rid=d3c43db0985ec379&fold=1'
    url = first + str(i) + last
    #訪問的頭文件,還帶這個cookie
    headers ={
        # 用的哪個瀏覽器
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
        # 從哪個頁面發(fā)出的數(shù)據(jù)申請磺芭,每個網站可能略有不同
        'referer': 'https://item.jd.com/100007299145.html',
        # 哪個用戶想要看數(shù)據(jù)赁炎,是游客還是注冊用戶,建議使用登錄后的cookie
        'cookie':'__jdu=1680001551; areaId=19; ipLoc-djd=19-1611-19916-0; PCSYCityID=CN_440000_440500_440507; shshshfpb=13d5ace3e0c654e309b2d61e7a07b91fad6982624770bea5f5bb38092c; shshshfpa=4c737b08-3394-a4b3-b659-a18b192fc770-1595515041; jwotest_product=99; pinId=2p6SoycXA0ub7BEMVGWTH7V9-x-f3wj7; pin=jd_74d219351fbde; unick=jd_74d219351fbde; _tp=8GzPfmiGUEaBRGeogBvd4t5TplVxg3zxt8bs3ngcPNY%3D; _pst=jd_74d219351fbde; unpl=V2_ZzNtbUoHQxRzWkQGK0oMAWIFEA5LUEcVfQtAVXpLXAI3C0ANclRCFnQUR1JnGlkUZwQZWEJcQxFFCEdkeBBVAWMDE1VGZxBFLV0CFSNGF1wjU00zQwBBQHcJFF0uSgwDYgcaDhFTQEJ2XBVQL0oMDDdRFAhyZ0AVRQhHZHseVQRmAhJZRldzJXI4dmR8HloGYQQiXHJWc1chVEFVfRtUBSoDFVRDVkIVcQxGZHopXw%3d%3d; TrackID=1wCKdOSD5KrPr8O-8Q8ZNY2qHWWnSFYqFttYCGaghAhCTJfuMXSq-ceKeblveKgrTAtrGxtwa_UKBfYrvn7gjh9rzj-yW_CTZ10IImNCXnDk; thor=009B9D6507BE905BC2DE807BBE72F8B35CD8B73035C26D7A345038B5814CE35B14B95EF514394E6B4FC7B2D50681F82230750F0A77F1DD2C0FDCF18CBE482BE34C35E09F82869EDAEBC523FC3D06AFB9697DD5D757371816CBB38D73638844425A74040FFF3C912B55C1D4F7D7C74B3349C0CB29CA3C28362C3448D41C3FD945FBFA4516199E07C7248688A0AACF46972E0F68ECB17F077A59B635B886B42CFF; ceshi3.com=000; __jdc=122270672; 3AB9D23F7A4B3C9B=AIA2RCPMDF6FLUI63SVRKBPBVA7Y6UOERHJAVC6EH35NTNAVXLPFLY237UYHURSTRA5M2DVSUDOYMUQQSLIRCJ3K6E; shshshfp=614a80530aada68a60a3c02ca77022d6; __jdv=122270672|shouji.jd.com|t_0_|zssc|ac8146d4-d7c0-4654-9cdc-bf07a57877eb-p_128538|1595580177176; __jda=122270672.1680001551.1595515038.1595580074.1595580177.4; shshshsID=bee374abb93f13738426527a23aedafa_5_1595580185627; __jdb=122270672.2.1680001551|4.1595580177; JSESSIONID=5B8E5551DA8CE1D3DE4E93C1C47F32E1.s1'
    }
    #嘗試獲取數(shù)據(jù)(這里的數(shù)據(jù)應該是從json里面獲取的)
    try:
        data = requests.get(url,headers = headers).text
        time.sleep(10)
        #print(data)
        '''
        result = re.findall('"content":"(.*?)","creationTime"',data)
        data_list.extend(result)
        '''
        
        #將Str數(shù)據(jù)改為字典,必須去掉最開頭和最結尾后面對應的符號才可以轉化為字典!
        jd=json.loads(data.lstrip('fetchJSON_comment98(').rstrip(');'))
        #print(jd)
        #取出用戶評論徙垫,但是還包含了用戶ID等其他信息和奇怪的符號
        com_list=jd['comments']
        #print(com_list)
        #爬取的數(shù)據(jù)為字典讥裤,將評論按鍵值對取出
        for a in com_list:
            result=a['content']
            #extend逐個添加,這里無論是字符串或者字典姻报,利用extend都會變成一個字一個
            #字的樣子己英,所以要將整句話作為一個整體添加進去!
            data_list.append(result)
            #print(data_list)
    except:
        print("本頁爬取失敗")

df = pd.DataFrame()
df["評論"] = data_list

df.to_excel("評論_匯總1.xlsx")

代碼大體是沒變的吴旋,里面也都有注釋损肛,主要講一下評論的提取,上次的淘寶是利用正則化來提取荣瑟,因為將爬取的數(shù)據(jù)data輸出(print)后我們很容易找到規(guī)律治拿,評論存在于兩個詞之間。在爬取京東的商品評論時笆焰,我想著是不是只要找到規(guī)律依葫蘆畫瓢就可以無限套娃了(秒敖倭隆!)然后print一看

image.png

我發(fā)現(xiàn)評論主要在content和vcontent之間嚷掠,馬上復制黏貼按照正則化項一輸出同波,多了好多奇奇怪怪的字符評論也少了幾條,重新回去仔細觀察后發(fā)現(xiàn)在content和vcontent之間的語句不止評論叠国,還包括客服回復等其他東西,而且最重要的是有一些評論不是在這兩個詞之間戴尸!
然后我各種觀察粟焊,修改正則項通通失敗了!最后去網上看大佬們是怎么處理的孙蒙,看完理解后就得到上面的結果了项棠,下面說一下思路!

首先將爬取的評論用json.loads()轉化為字典挎峦,當然也不是那么容易轉換的香追,不然上面的代碼怎么會有括號里面的那串東西!
我理解好思路后就想轉化為字典就好坦胶,那不是不用括號內那串代碼透典,果斷去掉,一運行顿苇,爬取失斍椭洹!好吧纪岁!果然沒有一條代碼是多余的凑队。
括號里面的代碼是去除data(即爬取到的內容)中的最前面和最后面相應的字符串,如果仔細觀察print出來data就可以發(fā)現(xiàn)(截圖并不是完整的data)

image.png

除了開頭和結果的符號外幔翰,這個看起來就像極了字典的格式漩氨,所以只要把開始和結果的多余字符串去除后西壮,就可以轉化為字典了!
轉化完成后叫惊,print輸出會發(fā)現(xiàn)內容簡潔了一些款青,仔細觀察會發(fā)現(xiàn)評論都在comments后面,所以我們將其單獨取出赋访,再一次print可都,可以發(fā)現(xiàn)內容更為簡潔了,離成功也不遠了蚓耽!繼續(xù)觀察渠牲,可以發(fā)現(xiàn)整體是一個字典,評論都是在content中步悠,準確來說content是一個鍵签杈,而評論是它的值,我們要的就是這個東西鼎兽,循環(huán)輸出就好了答姥!
這里用append來添加是因為如果用extend全部都變成一個字一個字,可以看一下這兩個方法的區(qū)別谚咬!

【注:上面超鏈接為方法的詳細解釋】
參考文章:https://www.jb51.net/article/140151.htm
https://www.cnblogs.com/huangbiquan/p/7923008.html
http://www.reibang.com/p/d4bbb6267e59
https://www.cnblogs.com/mayite/articles/9131501.html

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鹦付,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子择卦,更是在濱河造成了極大的恐慌敲长,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秉继,死亡現(xiàn)場離奇詭異祈噪,居然都是意外死亡,警方通過查閱死者的電腦和手機尚辑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門辑鲤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杠茬,你說我怎么就攤上這事月褥。” “怎么了瓢喉?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵吓坚,是天一觀的道長。 經常有香客問我灯荧,道長礁击,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮哆窿,結果婚禮上链烈,老公的妹妹穿的比我還像新娘。我一直安慰自己挚躯,他們只是感情好强衡,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著码荔,像睡著了一般漩勤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缩搅,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天越败,我揣著相機與錄音,去河邊找鬼硼瓣。 笑死究飞,一個胖子當著我的面吹牛,可吹牛的內容都是我干的堂鲤。 我是一名探鬼主播亿傅,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘟栖!你這毒婦竟也來了葵擎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤半哟,失蹤者是張志新(化名)和其女友劉穎酬滤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镜沽,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年贱田,在試婚紗的時候發(fā)現(xiàn)自己被綠了缅茉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡男摧,死狀恐怖蔬墩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情耗拓,我是刑警寧澤拇颅,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站乔询,受9級特大地震影響樟插,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一黄锤、第九天 我趴在偏房一處隱蔽的房頂上張望搪缨。 院中可真熱鬧,春花似錦鸵熟、人聲如沸副编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痹届。三九已至,卻和暖如春打月,著一層夾襖步出監(jiān)牢的瞬間队腐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工僵控, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留香到,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓报破,卻偏偏與公主長得像悠就,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子充易,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容