import urllib.request
import urllib.parse
import json
import re
import jsonpath
items_list=[]
def main():
#创建循环,爬取多页的评论内容#
url=' https://rate.taobao.com/feedRateList.htm?auctionNumId=559141739630&userNumId=100340983&currentPageNum=1&pageSize=20'
headers={
"User-Agnet":"Mozilla/5.0 (MacintoshIntel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
}
request=urllib.request.Request(url=url,headers=headers)
json_text=urllib.request.urlopen(request).read().decode()
print(json_text)
#将json两边的非法字符去掉#
json_text=json_text.strip('()\n\t\r')
print(json_text)
exit()
#将json格式字符串转化为python对象#
obj=json.loads(json_text)
print(obj)
print(type(obj))
#抓取评论内容:用户头像、用户名、评论内容、评论时间、手机类型#
#首先取出comments这个列表#
comments_list=obj['comments']
#遍历这个列表,依次提取每一条评论#
for comment in comments_list:
#用户头像#
user=jsonpath.jsonpath(comment,' ..sku')[0]
#将评论信息保存到字典中#
item={
'用户头像':face,
'用户名':name,
'评论':ping_content,
'时间':ping_time,
'信息':info,
}
print(item)
exit()
if name ==' main ':
main()
#coding=utf-8import urllib2
import sys
import json
import re
#设置系统默认编码为utf-8
reload(sys)
sys.setdefaultencoding("utf-8")
#Only for python2
'''
只是简单的示例,没有检查无评论的情况,其它异常也可能没有检查,
你可以根据自己的需要再对代码修改
'''
#解析网页数据
def parseData(html_data, reg_str):
pattern = re.compile(reg_str)
result = re.search(pattern, html_data)
if result:
return result.groups()
#commodity_url 为商品详情页面
commodity_url = "http://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9140345655.2.y3LCj0&id=44454286657"
html_data = urllib2.urlopen(commodity_url).read()
#获取用户ID和商品ID
auction_msg = parseData(html_data, r'userNumId=(.*?)&auctionNumId=(.*?)&')
if not auction_msg:
print "Get reviews failed!"#获取失败,退出
sys.exit()
reviews_url = "http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list&currentPageNum=1&rateType=&orderType=sort_weight&userNumId=%s&auctionNumId=%s"%auction_msg
response = urllib2.urlopen(reviews_url)
reviews_data = response.read().decode("gbk")
#获取评论数据
json_str = parseData(reviews_data, r'\((.*)\)')[0]
if not json_str:
print "Get reviews failed!"#获取失败,退出
sys.exit()
jdata = json.loads(json_str)
#下面只打印了第一条评论,如需要打印所有,则遍历jdata["comments"]即可
print jdata["comments"][0]["content"]