python爬取京东小爱音响评论

import requests
from bs4 import BeautifulSoup as bs
import re
import pandas as pd
from sqlalchemy import create_engine
from pandas.io.sql import to_sql as pd_sql
import pymysql
import random
import time

# 定义pandas存入mysql函数
def pandas_to_mysql(df_data, table_name, **kwargs):
    engine = create_engine(‘mysql+pymysql://{}:{}@{}:{}/{}?charset={}‘.format(kwargs[‘user‘],kwargs[‘password‘],kwargs[‘host‘],kwargs[‘port‘],kwargs[‘db‘],kwargs[‘charset‘]))
    pd_sql(df_data, table_name, engine, index=False, if_exists=‘append‘, chunksize=10000)  # if_exists: ‘replace‘, ‘append‘
    engine.dispose()

db_local_hwdata = {‘user‘:‘root‘,
                    ‘password‘:‘8888‘,
                    ‘port‘: 3306,
                    ‘host‘:‘localhost‘,
                    ‘db‘: ‘hwdata‘,
                    ‘charset‘: ‘utf8mb4‘}

# 设置代理池
proxies = {
            ‘http‘:‘http://120.83.110.65:9999‘,
           ‘http‘:‘http://183.146.156.209:9999‘,
           ‘http‘:‘http://123.169.34.94:9999‘,
           ‘http‘:‘http://117.57.90.141:9999‘,
           ‘http‘:‘http://117.69.201.19:9999‘,
           ‘http‘:‘http://117.95.192.240:9999‘,
           ‘http‘:‘http://117.95.192.240:9999‘,
           ‘http‘:‘http://163.204.244.161:9999‘,
           ‘http‘:‘http://163.204.246.168:9999‘,
           ‘http‘:‘http://171.35.160.62:9999‘,
           ‘http‘:‘http://36.22.77.186:9999‘,
           ‘http‘:‘http://120.83.107.184:9999‘,
          }

url = ‘https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv33766&productId=5239477&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1‘  # 商品链接
headers = {
    ‘Referer‘: ‘https://item.jd.com/5239477.html‘,
    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36‘}
result = requests.get(url, headers=headers, proxies=proxies)
result_text = result.text
result_text = result_text.replace(‘\\n‘, ‘‘)
comment_number = re.search(‘"commentCount":([\d]+),‘, result_text, re.S).group(1)  # 所有评论的数量,用于分页,每页评论数量为10

# 遍历,10个评论一页
for page_i in range(0, int(int(comment_number)/10)):
    time.sleep(random.uniform(0.6, 4))
    url = f‘https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv33766&productId=5239477&score=0&sortType=5&page={page_i}&pageSize=10&isShadowSku=0&fold=1‘
    result = requests.get(url, headers=headers, proxies=proxies)
    result_text = result.text
    result_text = result_text.replace(‘\\n‘, ‘‘)

    analyse_result = re.findall(‘"guid":"(.*?)",.*?"content":"(.*?)",.*?"creationTime":"(.*?)".*?"isDelete":(.*?),.*?"isTop":(.*?),.*?"replyCount":(.*?),.*?"score":(.*?),.*?"imageStatus":(.*?),.*?"usefulVoteCount":(.*?),.*?"userClient":(.*?),.*?"imageCount":(.*?),.*?"anonymousFlag":(.*?),.*?"plusAvailable":(.*?),.*?"productColor":"(.*?)".*?"imageIntegral".*?,(.*?)"status".*?,"referenceTime":"(.*?)".*?nickname":"(.*?)".*?"days":(.*?),.*?"afterDays":(.*?)}‘, result_text, re.S)
    final_data = []

    for rt in analyse_result:
        person_data = []
        for ch_i, character in enumerate(rt):
            if ch_i == 14 and (character != ‘‘):
                try:
                    character = re.search(‘"content":"(.*?)",‘, character, re.S).group(1)
                except:
                    character = ‘‘
            if ch_i == 18 and (int(character)< int(rt[-2])):
                character = ‘‘
            person_data.append(character)
        final_data.append(person_data)
    dfanalyse_result = pd.DataFrame(final_data, columns=[‘commentUrl‘, ‘comment‘, ‘commentTime‘, ‘isDelete‘, ‘isTop‘, ‘replyCount‘, ‘stars‘, ‘imageFlag‘, ‘voteCount‘, ‘userClient‘, ‘imageCount‘, ‘anonymousFlag‘, ‘plusFlag‘, ‘productCatergory‘, ‘afterComment‘, ‘purchaseTime‘, ‘userName‘, ‘commentAfterBuyingTime‘, ‘afterCommentAfterBuyingTime‘])  # 将数据转换为DataFrame格式
    pandas_to_mysql(dfanalyse_result, ‘w20191212jingdong_comments‘, **db_local_hwdata)  # 存入mysql
    print(f‘page_i{page_i} finished!‘)

原文地址:https://www.cnblogs.com/jaysonteng/p/12702295.html

时间: 2024-10-13 03:36:34

python爬取京东小爱音响评论的相关文章

Python爬取京东商品数据

对京东某一商品信息页面的HTML代码进行分析,可以发现它的图书产品信息页面都含有这样一段代码(不同类的商品页面有些不同): window.pageConfig={compatible:true,searchType: 1,product:{"skuid":"11408255","name":"\u4f17\u795e\u7684\u536b\u661f\uff1a\u4e2d\u56fd\u7981\u533a","

python 爬取天猫美的评论数据

笔者最近迷上了数据挖掘和机器学习,要做数据分析首先得有数据才行.对于我等平民来说,最廉价的获取数据的方法,应该是用爬虫在网络上爬取数据了.本文记录一下笔者爬取天猫某商品的全过程,淘宝上面的店铺也是类似的做法,不赘述.主要是分析页面以及用Python实现简单方便的抓取. 笔者使用的工具如下 Python 3--极其方便的编程语言.选择3.x的版本是因为3.x对中文处理更加友好. Pandas--Python的一个附加库,用于数据整理. IE 11--分析页面请求过程(其他类似的流量监控工具亦可).

python 爬取京东手机图

初学urllib,高手勿喷... import re import urllib.request #函数:每一页抓取的30张图片 def craw(url,page): imagelist = []#这里每次都要重新定义新的空列表,第一次没有定义结果爬取的都是一样的图片 html1 = urllib.request.urlopen(url) data = str(html1.read()) patter1 = '<li class="gl-item".+?</li>'

python爬取京东所有iphone的价格和名称

原本想升一下级,用一下creep神马的,但是正则今天突然出了点小问题,我就生气了,就用正则抓取了一下. 这个正则可以用re.search 或者 re.findall都可以,我比较喜欢用search因为可以直接提取结果不用在过滤了. 代码如下,这个小爬爬比较简单. #-*- coding:utf-8 -*- import urllib2 import json import re SearchIphoneUrl = 'http://search.jd.com/Search?keyword=%E8%

python爬取京东菜单

#!/usr/bin/python#encoding=utf-8from bs4 import BeautifulSoup as bsimport requestsheaders = { "host": "www.jd.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.25

python制作爬虫爬取京东商品评论教程

作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论. 京东商品评论信息是由JS动态加载的,所以直接抓取商品详

Python爬虫实战(2):爬取京东商品列表

1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反,JavaScript实现的动态网页内容,无法从html源代码抓取需要的内容,必须先执行JavaScript. 我们在<Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容>一文已经成功检验了动态网页内容的抓取方法,本文将实验程序进行改写,使用开源Python爬虫

python爬虫实战(一)----------爬取京东商品信息

本文章的例子仅用于学习之用,如涉及版权隐私信息,请联系本人删除,谢谢. 最近一直在练习使用python爬取不同网站的信息,最终目的是实现一个分布式的网络爬虫框架,可以灵活适用不同的爬取需求. 项目github地址: https://github.com/happyAnger6/anger6Spider 在学习的过程中遇到不少问题,在这里做一下总结,并分享出来,希望有兴趣的朋友批评指正,共同学习共同进步. 本着实用至上的目的,不准备过多讲实现细节和原理,直接通过项目需求来边实战边学习,因此本系列文

python爬取网易云音乐歌曲评论信息

网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了"它比我还懂我的音乐喜好"."小清新的界面设计"就是它独有的评论区了------各种故事汇,各种金句频出.我们可以透过歌曲的评论数来判断一个歌者的市场分量和歌曲的流行度.言归正传,如果我们想要简单爬取指定歌曲的评论内容来做词云或者其他相关数据分析,有没有容易上手的好方法呢? 首先,我们打开网易云音乐的网页版:https://music.163.com/,随便选择一首歌曲,如林志炫版本的<