【爬虫专栏5】json爬取京东

import requests
import json
import pandas as pd
import csv

for i  in range(100):
    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=52674737378&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1'.format(i)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'
        }

    # 使用request模块打开并获取网页内容
    response = requests.get(url, headers=headers)   # 禁止重定向
    content = response.text[20:-2]
    #print(content)
    #两种方法解析json都可以
    result = json.loads(content)
    #result2 = response.json()
    print(result)
    data = result
    """
    #pandas可以直接解析json,但是最好对相对规整的数据使用#########################################
    data_table = pd.read_json(content)
    data_table.to_csv(r'E:\vscode_code\爬虫测试\疫情\yiqing1_data.csv')
    """

    for element in data['comments']:        
            content = element['content']  
            file=open(r"E:\vscode_code\爬虫测试\json提取\京东\comm.txt", 'a')
            file.writelines(format(content))
             
            #print(content)   
            #print("评论内容:{}".format(content))    
    print('爬取第{}页'.format(i+1))  
print('finished')
import requests
import urllib3
import json
import urllib
import urllib.request
from bs4 import BeautifulSoup
for i in range(100):    
    url1 = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4403&productId=3487485&score=3&sortType=5&page='    
    url2 = str(i)    
    uel3 = '&pageSize=10&isShadowSku=0&rid=0&fold=1'    
    finalurl = url1+url2+uel3    
    print(finalurl)
    xba = requests.get(finalurl)    
    content = xba.text[26:-2]
    #print(content)
    data=json.loads(xba.text[26:-2])
    '''    
    for i in data['comments']:        
        content = i['content']     
        #print(content)   
        print("评论内容:{}".format(content))     
    '''   
    
    for element in data['comments']:        
            content = element['content']  
            file=open(r"E:\vscode_code\爬虫测试\json提取\京东\comm2.txt", 'a')
            file.writelines(format(content))
             
            #print(content)   
            #print("评论内容:{}".format(content))    
    print('爬取第{}页'.format(i+1))  
print("finished")

上面两个对应不同的评论网页,思路一样

参考:
以后在使用json时,最好先输出一下参数,检查一下是否符合格式,这样就能减少错误,当然也可能有别的原因。
同时参考:
里面的程序用到了response.text[26:-2],这一步就是为了提取出正确的json格式数据
以后在json.loads(content)之前最好先print(content)看看这个content是不是标准的json格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值