Python-爬取淘宝评论

Python09

Python-爬取淘宝评论,第1张

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-8

import 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"]