55
66import random
77import time
8+
89import jieba .analyse
910import requests
11+ import yaml
1012from lxml import etree
13+
1114import jdspider
12- import yaml
15+
1316
1417CONFIG_PATH = './config.yml'
1518
19+
1620jieba .setLogLevel (jieba .logging .INFO )
17- """
18- ck填到下面就好,只支持网页版的Ck
19- 以下为最短格式
20- """
21+
2122with open (CONFIG_PATH , 'r' , encoding = 'utf-8' ) as f :
2223 cfg = yaml .safe_load (f )
2324ck = cfg ['user' ]['cookie' ]
2425
2526headers = {
2627 'cookie' : ck ,
27- 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' ,
28+ 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/'
29+ '537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/'
30+ '537.36'
2831}
2932
3033
@@ -35,21 +38,21 @@ def generation(pname, _class=0, _type=1):
3538 list .append (pname )
3639 for item in list :
3740 spider = jdspider .JDSpider (item )
38- result = spider .getData (3 , 3 ) # 这里可以自己改
41+ result = spider .getData (3 , 3 ) # 这里可以自己改
3942
4043 # 0是追评 1是评价
4144 # class 0是评价 1是提取id
4245 try :
4346 name = jieba .analyse .textrank (pname , topK = 5 , allowPOS = 'n' )[0 ]
44- except :
47+ except Exception as _ :
4548 name = "宝贝"
4649 if _class == 1 :
4750 return name
4851 else :
4952 datas = {
5053 1 : {
5154 "开始" : result ,
52- "中间" : result , # 重复的几率不大,相信我(
55+ "中间" : result , # 重复的几率不大,相信我(
5356 "结束" : result
5457 },
5558 0 : {
@@ -61,13 +64,15 @@ def generation(pname, _class=0, _type=1):
6164 if _type == 1 :
6265 comments = datas [_type ]
6366 return random .randint (3 , 5 ), (
64- random .choice (comments ["开始" ]) + random .choice (comments ["中间" ]) + random .choice (comments ["结束" ])).replace (
65- "$" , name )
67+ random .choice (comments ["开始" ]) +
68+ random .choice (comments ["中间" ]) +
69+ random .choice (comments ["结束" ])).replace ("$" , name )
6670 elif _type == 0 :
6771 comments = datas [_type ]
6872 return (
69- random .choice (comments ["开始" ]) + random .choice (comments ["中间" ]) + random .choice (comments ["结束" ])).replace (
70- "$" , name )
73+ random .choice (comments ["开始" ]) +
74+ random .choice (comments ["中间" ]) +
75+ random .choice (comments ["结束" ])).replace ("$" , name )
7176
7277
7378# 查询全部评价
@@ -93,7 +98,8 @@ def ordinary(N):
9398 Order_data = []
9499 req_et = []
95100 for i in range ((N ['待评价订单' ] // 20 ) + 1 ):
96- url = f'https://club.jd.com/myJdcomments/myJdcomment.action?sort=0&page={ i + 1 } '
101+ url = (f'https://club.jd.com/myJdcomments/myJdcomment.action?sort=0&'
102+ f'page={ i + 1 } ' )
97103 req = requests .get (url , headers = headers )
98104 req_et .append (etree .HTML (req .text ))
99105 for i in req_et :
@@ -106,15 +112,17 @@ def ordinary(N):
106112 print (f"当前共有{ N ['待评价订单' ]} 个评价。" )
107113 for i , Order in enumerate (Order_data ):
108114 oid = Order .xpath ('tr[@class="tr-th"]/td/span[3]/a/text()' )[0 ]
109- oname_data = Order .xpath ('tr[@class="tr-bd"]/td[1]/div[1]/div[2]/div/a/text()' )
110- pid_data = Order .xpath ('tr[@class="tr-bd"]/td[1]/div[1]/div[2]/div/a/@href' )
115+ oname_data = Order .xpath (
116+ 'tr[@class="tr-bd"]/td[1]/div[1]/div[2]/div/a/text()' )
117+ pid_data = Order .xpath (
118+ 'tr[@class="tr-bd"]/td[1]/div[1]/div[2]/div/a/@href' )
111119 for oname , pid in zip (oname_data , pid_data ):
112120 pid = pid .replace ('//item.jd.com/' , '' ).replace ('.html' , '' )
113121
114122 print (f"\t { i } .开始评价订单\t { oname } [{ oid } ]" )
115- url2 = f "https://club.jd.com/myJdcomments/saveProductComment.action"
116- xing ,Str = generation (oname )
117- xing = 5 # 写死五星
123+ url2 = "https://club.jd.com/myJdcomments/saveProductComment.action"
124+ xing , Str = generation (oname )
125+ xing = 5 # 写死五星
118126 print (f'\t \t 评价内容,星级{ xing } :' , Str )
119127 data2 = {
120128 'orderId' : oid ,
@@ -134,10 +142,12 @@ def ordinary(N):
134142def sunbw (N ):
135143 Order_data = []
136144 for i in range ((N ['待晒单' ] // 20 ) + 1 ):
137- url = f"https://club.jd.com/myJdcomments/myJdcomment.action?sort=1&page={ i + 1 } "
145+ url = (f'https://club.jd.com/myJdcomments/myJdcomment.action?sort=1'
146+ f'&page={ i + 1 } ' )
138147 req = requests .get (url , headers = headers )
139148 req_et = etree .HTML (req .text )
140- Order_data .extend (req_et .xpath ('//*[@id="evalu01"]/div[2]/div[1]/div[@class="comt-plist"]/div[1]' ))
149+ Order_data .extend (req_et .xpath (
150+ '//*[@id="evalu01"]/div[2]/div[1]/div[@class="comt-plist"]/div[1]' ))
141151 print (f"当前共有{ N ['待晒单' ]} 个需要晒单。" )
142152 for i , Order in enumerate (Order_data ):
143153 oname = Order .xpath ('ul/li[1]/div/div[2]/div[1]/a/text()' )[0 ]
@@ -147,17 +157,21 @@ def sunbw(N):
147157 print (f'\t 开始晒单{ i } ,{ oname } ' )
148158 # 获取图片
149159 pname = generation (pname = oname , _class = 1 )
150- url1 = f"https://club.jd.com/discussion/getProductPageImageCommentList.action?productId={ pid } "
160+ url1 = (f'https://club.jd.com/discussion/getProductPageImageCommentList'
161+ f'.action?productId={ pid } ' )
151162 imgdata = requests .get (url1 , headers = headers ).json ()
152163 if imgdata ["imgComments" ]["imgCommentCount" ] == 0 :
153- url1 = "https://club.jd.com/discussion/getProductPageImageCommentList.action?productId=1190881"
164+ url1 = ('https://club.jd.com/discussion/getProductPageImage'
165+ 'CommentList.action?productId=1190881' )
154166 imgdata = requests .get (url1 , headers = headers ).json ()
155167 imgurl = imgdata ["imgComments" ]["imgList" ][0 ]["imageUrl" ]
156168
157169 #
158170 print (f'\t \t 图片url={ imgurl } ' )
159- url2 = "https://club.jd.com/myJdcomments/saveShowOrder.action" # 提交晒单
160- headers ['Referer' ] = 'https://club.jd.com/myJdcomments/myJdcomment.action?sort=1'
171+ # 提交晒单
172+ url2 = "https://club.jd.com/myJdcomments/saveShowOrder.action"
173+ headers ['Referer' ] = ('https://club.jd.com/myJdcomments/myJdcomment.'
174+ 'action?sort=1' )
161175 headers ['Origin' ] = 'https://club.jd.com'
162176 headers ['Content-Type' ] = 'application/x-www-form-urlencoded'
163177 data = {
@@ -183,21 +197,27 @@ def review(N):
183197 req_et = []
184198 Order_data = []
185199 for i in range ((N ['待追评' ] // 20 ) + 1 ):
186- url = f"https://club.jd.com/myJdcomments/myJdcomment.action?sort=3&page={ i + 1 } "
200+ url = (f"https://club.jd.com/myJdcomments/myJdcomment.action?sort=3"
201+ f"&page={ i + 1 } " )
187202 req = requests .get (url , headers = headers )
188203 req_et .append (etree .HTML (req .text ))
189204 for i in req_et :
190- Order_data .extend (i .xpath ('//*[@id="main"]/div[2]/div[2]/table/tr[@class="tr-bd"]' ))
205+ Order_data .extend (
206+ i .xpath ('//*[@id="main"]/div[2]/div[2]/table/tr[@class="tr-bd"]' ))
191207 if len (Order_data ) != N ['待追评' ]:
192208 for i in req_et :
193- Order_data .extend (i .xpath ('//*[@id="main"]/div[2]/div[2]/table/tbody/tr[@class="tr-bd"]' ))
209+ Order_data .extend (i .xpath (
210+ '//*[@id="main"]/div[2]/div[2]/table/tbody/tr[@class="tr-bd"]' ))
194211 print (f"当前共有{ N ['待追评' ]} 个需要追评。" )
195212 for i , Order in enumerate (Order_data ):
196213 oname = Order .xpath ('td[1]/div/div[2]/div/a/text()' )[0 ]
197214 _id = Order .xpath ('td[3]/div/a/@href' )[0 ]
198215 print (f'\t 开始第{ i } ,{ oname } ' )
199- url1 = "https://club.jd.com/afterComments/saveAfterCommentAndShowOrder.action"
200- pid , oid = _id .replace ('http://club.jd.com/afterComments/productPublish.action?sku=' , "" ).split ('&orderId=' )
216+ url1 = ("https://club.jd.com/afterComments/"
217+ "saveAfterCommentAndShowOrder.action" )
218+ pid , oid = _id .replace (
219+ 'http://club.jd.com/afterComments/productPublish.action?sku=' ,
220+ "" ).split ('&orderId=' )
201221 context = generation (oname , _type = 0 )
202222 print (f'\t \t 追评内容:{ context } ' )
203223 req_url1 = requests .post (url1 , headers = headers , data = {
@@ -218,21 +238,25 @@ def Service_rating(N):
218238 Order_data = []
219239 req_et = []
220240 for i in range ((N ['服务评价' ] // 20 ) + 1 ):
221- url = f"https://club.jd.com/myJdcomments/myJdcomment.action?sort=4&page={ i + 1 } "
241+ url = (f"https://club.jd.com/myJdcomments/myJdcomment.action?sort=4"
242+ f"&page={ i + 1 } " )
222243 req = requests .get (url , headers = headers )
223244 req_et .append (etree .HTML (req .text ))
224245 for i in req_et :
225- Order_data .extend (i .xpath ('//*[@id="main"]/div[2]/div[2]/table/tbody/tr[@class="tr-bd"]' ))
246+ Order_data .extend (i .xpath (
247+ '//*[@id="main"]/div[2]/div[2]/table/tbody/tr[@class="tr-bd"]' ))
226248 if len (Order_data ) != N ['服务评价' ]:
227249 Order_data = []
228250 for i in req_et :
229- Order_data .extend (i .xpath ('//*[@id="main"]/div[2]/div[2]/table/tr[@class="tr-bd"]' ))
251+ Order_data .extend (i .xpath (
252+ '//*[@id="main"]/div[2]/div[2]/table/tr[@class="tr-bd"]' ))
230253 print (f"当前共有{ N ['服务评价' ]} 个需要服务评价。" )
231254 for i , Order in enumerate (Order_data ):
232255 oname = Order .xpath ('td[1]/div[1]/div[2]/div/a/text()' )[0 ]
233256 oid = Order .xpath ('td[4]/div/a[1]/@oid' )[0 ]
234257 print (f'\t 开始第{ i } ,{ oname } ' )
235- url1 = f'https://club.jd.com/myJdcomments/insertRestSurvey.action?voteid=145&ruleid={ oid } '
258+ url1 = (f'https://club.jd.com/myJdcomments/insertRestSurvey.action'
259+ f'?voteid=145&ruleid={ oid } ' )
236260 data1 = {
237261 'oid' : oid ,
238262 'gid' : '32' ,
@@ -294,4 +318,4 @@ def main():
294318 try :
295319 main ()
296320 except RecursionError :
297- print ("多次出现未完成情况,程序自动退出" )
321+ print ("多次出现未完成情况,程序自动退出" )
0 commit comments