用Python爬取京東手機評論

2021-10-12 10:23:03 字數 3775 閱讀 5875

好評:

中評:差評:

追評:可以看到這個url裡都有以下幾個引數:

"videocount": 2638,

"videocountstr": "2600+",

"aftercount": 4852,

"aftercountstr": "4800+",

"showcount": 24200,

"showcountstr": "2.4萬+",

"productid": 100006788665,

"score1count": 2600,

"score2count": 592,

"score3count": 1756,

"score4count": 3499,

"score5count": 168724

}

import requests

import pandas as pd

import json

import time

import csv

import re

##callback=fetchjson_comment98&productid=100006788665

#&score=0&sorttype=5&page=0&pagesize=10&isshadowsku=0&fold=1

#requests請求位址

url =

""#請求頭

header =

for i in

range

(100):

#請求引數

data =

html = requests.get(url,params = data,headers = header)

這裡有一點忘記說了,京東手機不通的產品有不同的productid,想要換不同的產品進行爬取,只需要換這個id就行了。

在用get請求網頁內容時,有以下兩種方式:

1、requests.get(url = 「」)

url=

callback=fetchjson_comment98&productid=100006788665

&score=0&sorttype=5&page=0&pagesize=10&isshadowsku=0&fold=1

2、requests.get(url = 「」, params = data) 使用params

url=

html_json = re.search(

"(?<=fetchjson_comment98\().*(?=\))"

,html.text)

.group(

0)

#(?<=fetchjson_comment98().(?=)

(?<=fetchjson_comment98()表示匹配以"fetchjson_comment98(「為開頭的字串,並且捕獲(儲存)到分組中,

這裡的(以(表示,許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元"轉義」,

即,將反斜槓字元\ 放在它們前面。

(?=)表示匹配以\結尾的字串,並且捕獲(儲存)到分組中。

中間的.,其中.表示匹配除換行符 \n 之外的任何單字元,*表示匹配前面的子表示式零次或多次,兩個加起來形成乙個貪婪匹配,就是除了換行符之外,所有字元都匹配,並且匹配次數不限制。

#import re

a = 「123abc456」

print re.search("([0-9])([a-z])([0-9])",a).group(0) #123abc456,返回整體

print re.search("([0-9])([a-z])([0-9])",a).group(1) #123

print re.search("([0-9])([a-z])([0-9])",a).group(2) #abc

print re.search("([0-9])([a-z])([0-9])",a).group(3) #456

正規表示式中的三組括號把匹配結果分成三組

group() 同group(0)就是匹配正規表示式整體結果

group(1) 列出第乙個括號匹配部分,group(2) 列出第二個括號匹配部分,group(3) 列出第三個括號匹配部分。

沒有匹配成功的,re.search()返回none

『』』

j = json.load(html_json)

#儲存為字典

for jj in

range

(len

(j["comments"])

):data1 =

[(j[

"comments"

][jj]

["content"])

]#從j中找出"comments"中的"conent"

data2 = pd.dataframe(data1)

data2.to_csv(

,header =

false

,index =

false

,mode =

"a+"

)time.sleep(2)

print

("page "

+str(1

+i)+

"has done"

)

借鑑資料:

如何解決python爬蟲中response [200]返回值問題

正則 ?<= 和 ?= 用法

python3 re.search()方法

python——re.search().group()

request–get請求的用法

完整**:

import requests

import pandas as pd

import json

import time

import csv

import re

url =

""#請求頭

header =

for i in

range

(100):

#請求引數

data =

html = requests.get(url,params = data,headers = header)

html_json = re.search(

"(?<=fetchjson_comment98\().*(?=\))"

,html.text)

.group(0)

j = json.load(html_json)

#儲存為字典

for jj in

range

(len

(j["comments"])

):data1 =

[(j[

"comments"

][jj]

["content"])

]#從j中找出"comments"中的"conent"

data2 = pd.dataframe(data1)

data2.to_csv(

,header =

false

,index =

false

,mode =

"a+"

) time.sleep(2)

print

("page "

+str(1

+i)+

"has done"

)

python爬取京東評論

這不是我的第乙個爬蟲,但大多數都是像這樣簡單粗暴的,因為一開始對於定義函式,然後再進行相應的操作,是比較困難的,這能直接寫for迴圈語句。然後,我們便開始進行相應的爬蟲第一步 匯入必要的包 import requests import json header這個的作用在於偽裝成瀏覽器進行操作,有些網...

python爬取京東評論 一

作為乙個爬蟲小白解決問題是十分蛋疼的 皿 就這幾行 我折磨了一下午,然後我發現,學習 最大的難題是學習資源獲取的途徑並不是 本身,只要學,任何人都能學會 開發者選項 3.知道了這個是相應的請求了,去headers弄url,去看看怎麼樣 複製url 4下面開始搞 import requests imp...

用Python爬取京東商品評論(2)

首先開啟京東的頁面,輸入你想要查詢的某項商品的名稱,這裡用貝因美的某一款奶粉舉例 1.首先我們右擊選擇檢視網頁源 3.利用params引數構建 我們可以發現 callback fetchjson comment98vv75454 productid 1601354 score 0 sorttype ...