日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python爬取当当网商品评论

發(fā)布時(shí)間:2024/3/7 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取当当网商品评论 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python爬取當(dāng)當(dāng)網(wǎng)商品評(píng)論

本案例獲取某鞋評(píng)論作為例

案例目的:

通過爬取當(dāng)當(dāng)網(wǎng)商品評(píng)價(jià),介紹通過結(jié)合jsonpath和正則表達(dá)式獲取目標(biāo)數(shù)據(jù)的方法。

代碼功能:

輸入爬取的頁(yè)數(shù),自動(dòng)下載保存每頁(yè)的的評(píng)價(jià)以及對(duì)應(yīng)用戶昵稱。

1.找到目標(biāo)的url

2.檢查響應(yīng)結(jié)果


由上圖,我們發(fā)現(xiàn):評(píng)論的內(nèi)容在json文件中的html文件之下。

當(dāng)我們展開Show more時(shí),可以找到評(píng)論內(nèi)容。

那么問題來了,如何提取評(píng)論內(nèi)容呢?

1.既然,節(jié)點(diǎn)html對(duì)應(yīng)的數(shù)據(jù)為html格式,我們是否可以通過xpath的方法來提取里面的內(nèi)容。答案是不可以,我經(jīng)過調(diào)試之后,無法通過xpath進(jìn)行提取。

2.我們可以通過jsonpath將html中的內(nèi)容全部提取出來,然后再通過正則表達(dá)式將我們需要的商品評(píng)論和用戶昵稱提取出來。經(jīng)過調(diào)試,答案是可以的。

3.找到提取方法后,還需要找到翻頁(yè)的url規(guī)律。

找到前三頁(yè)評(píng)論的url如下:

http://product.dangdang.com/index.php?r=comment%2Flist&productId=1412059069&categoryPath=58.65.03.03.00.00&mainProductId=1412059069&mediumId=21&pageIndex=1&sortType=1&filterType=1&isSystem=1&tagId=0&tagFilterCount=0&template=cloth http://product.dangdang.com/index.php?r=comment%2Flist&productId=1412059069&categoryPath=58.65.03.03.00.00&mainProductId=1412059069&mediumId=21&pageIndex=2&sortType=1&filterType=1&isSystem=1&tagId=0&tagFilterCount=0&template=cloth&long_or_short=short http://product.dangdang.com/index.php?r=comment%2Flist&productId=1412059069&categoryPath=58.65.03.03.00.00&mainProductId=1412059069&mediumId=21&pageIndex=3&sortType=1&filterType=1&isSystem=1&tagId=0&tagFilterCount=0&template=cloth&long_or_short=short

對(duì)比發(fā)現(xiàn):不同頁(yè)url的不同之處,在于參數(shù)pageindex。第一頁(yè)對(duì)應(yīng)1,第二頁(yè)為2… … 而參數(shù)long_or_short=short對(duì)結(jié)果無影響,因此不做考慮。

所有問題分析完畢,上代碼:

import requests import jsonpath import re import jsonif __name__ == '__main__':# 輸入要爬取的頁(yè)數(shù)pages = int(input('請(qǐng)輸入要爬取的頁(yè)數(shù):'))for i in range(pages):page = i + 1# 確認(rèn)目標(biāo)的urlurl = f'http://product.dangdang.com/index.php?r=comment%2Flist&productId=1412059069&categoryPath=58.65.03.03.00.00&mainProductId=1412059069&mediumId=21&pageIndex={page}&sortType=1&filterType=1&isSystem=1&tagId=0&tagFilterCount=0&template=cloth'# 構(gòu)造請(qǐng)求頭參數(shù)headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36','Referer':'http://product.dangdang.com/1412059069.html','Cookie':'from=460-5-biaoti; order_follow_source=P-460-5-bi%7C%231%7C%23www.baidu.com%252Fother.php%253Fsc.060000jRtGgkBd47ECAxHUxBlqwLkfBJsl8lSLtmm9Zl27Qa_kZyOm2Qg_lyRgkRd4vKD9uWt%7C%230-%7C-; ddscreen=2; __permanent_id=20210304204636997189494350346254347; __visit_id=20210304204637001245338343220621735; __out_refer=1614861997%7C!%7Cwww.baidu.com%7C!%7C%25E5%25BD%2593%25E5%25BD%2593%25E7%25BD%2591; __ddc_15d_f=1614861997%7C!%7C_utm_brand_id%3D11106; dest_area=country_id%3D9000%26province_id%3D111%26city_id%3D0%26district_id%3D0%26town_id%3D0; pos_0_end=1614862009963; __ddc_1d=1614862062%7C!%7C_utm_brand_id%3D11106; __ddc_24h=1614862062%7C!%7C_utm_brand_id%3D11106; __ddc_15d=1614862062%7C!%7C_utm_brand_id%3D11106; pos_9_end=1614862078563; ad_ids=4343831%2C3554365%7C%233%2C2; secret_key=f097eea219c17c155499399cb471dd5a; pos_1_start=1614863547245; pos_1_end=1614863547264; __rpm=%7Cp_1412059069.029..1614863548625; __trace_id=20210304211706253212636290464425201'}# 發(fā)送請(qǐng)求,獲取響應(yīng)response = requests.get(url,headers=headers)# 響應(yīng)類型為json類型py_data = response.json()# 解析數(shù)據(jù),提取數(shù)據(jù).html_data = jsonpath.jsonpath(py_data,'$..html')[0]# 通過正則表達(dá)式,提取html數(shù)據(jù)中的用戶昵稱和評(píng)論comment_list = re.findall(r'<div class="describe_detail">\s*<span>(.*?)</span>\s*</div>',html_data)nickname_list = re.findall(r'alt="(.*?)"',html_data)# 將數(shù)據(jù)放進(jìn)字典for i in range(len(comment_list)):dict_ = {}dict_[nickname_list[i]] = comment_list[i]# 將字典轉(zhuǎn)換成json格式j(luò)son_data = json.dumps(dict_,ensure_ascii=False)+',\n'# 將數(shù)據(jù)保存到本地with open('當(dāng)當(dāng)網(wǎng)商品評(píng)價(jià).json','a',encoding='utf-8')as f:f.write(json_data)

爬取了兩頁(yè),每一頁(yè)對(duì)應(yīng)10個(gè)數(shù)據(jù)。

執(zhí)行結(jié)果如下:

總結(jié)

以上是生活随笔為你收集整理的python爬取当当网商品评论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。