怎样用Python爬取京东的价格和标题及评价等商品情况

技术怎样用Python爬取京东的价格和标题及评价等商品情况这篇文章将为大家详细讲解有关怎样用Python爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知

这篇文章将为大家详细讲解有关怎样用计算机编程语言爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

前言

代码实现

导入请求

fromlxmlimportetree

进口时间

导入随机

importpandasaspd

importjson

fromsqlalchemyimportcreate _ engine

来自sqlalchemy。万瓜格斯。oracleimportdate,FLOAT,NUMBER,VARCHAR2

importcx_Oracle先导入需要用的包

defcreate _ table(table _ name):

conn=cx_Oracle.connect('用户/密码@ ip:端口/数据库)

cursor=conn.cursor()

创建_姬寿='''CREATETABLE{}(商品IDVARCHAR2(256),价格数字(19,8),店名VARCHAR2(256),店属性VARCHAR2(256),标题VARCHAR2(256),评论数字(19),优评论数字(19))' '。格式(表名)

光标。执行(创建_姬寿)

cursor.close()

conn.close()建表

def映射_ df _ type(df _ pro):

dtypedict={}

fori,jinzip(df_pro.columns,df_pro.dtypes):

如果"对象"定义类型的映射

defsava_oracle(df_pro):

engine=create _ engine(' Oracle ://用户:密码@ IP :端口/数据库')

dtypedict=mapping _ df _ types(df _ pro)

df_pro.to_sql('姬寿,con=引擎,索引=False,if_exists='append ',dtype=dtypedict)定义请求头和请求方法

ers={
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37'
}
def requesturl(url):
      session = requests.Session()
      rep = session.get(url,headers=headers)
      return rep

解析评论的url

def commreq(url_comm):
      dd_commt = pd.DataFrame(columns=['商品ID','评论','优评论'])
      session = requests.Session()
      rep_comm = session.get(url_comm,headers=headers)
      comment = json.loads(rep_comm.text)['CommentsCount']
      comment_list = []
      for i in comment:
            comment_list.append({'商品ID':str(i['ProductId']),'评论':i['CommentCount'],'优评论':i['GoodCount']})
      dd_commt = dd_commt.append(comment_list)
      return dd_commt

主体解析

def parse(rep):
      df = pd.DataFrame(columns=['商品ID','价格','店名','店属性','标题'])
      html = etree.HTML(rep.text)
      all_pro = html.xpath("//ul[@class='gl-warp clearfix']/li")
      proid = ','.join(html.xpath("//li/@data-sku"))
      # 商品评价url
      # referenceIds=之后到&callback之前,都是商品的id,只需要在商品列表获取商品id拼接即可
      # 1. 评论解析
      url_comm = r'https://club.jd.com/comment/productCommentSummaries.action?referenceIds={}'.format(proid)
      dd_commt = commreq(url_comm)
      # 2. 商品列表信息解析
      pro_list = []
      for product in all_pro:
            proid = ''.join(product.xpath("@data-sku"))
            price = ''.join(product.xpath("div[@class='gl-i-wrap']//strong/i/text()"))
            target = ''.join(product.xpath("div[@class='gl-i-wrap']//a/em//text()")).replace('\t\n','').replace('\\u2122','')
            shopname = ''.join(product.xpath("div[@class='gl-i-wrap']//span/a/@title"))
            shoptips = product.xpath("div[@class='gl-i-wrap']//i[contains(@class,'goods-icon')]/text()")
            if '自营' in shoptips:
                  shoptips='自营'
            else:
                  shoptips='非自营'            
            pro_list.append(dict(商品ID=proid,价格=price,店名=shopname,店属性=shoptips,标题=target))
      df = df.append(pro_list)
      # 3. 合并商品评论和列表
      df_pro = pd.merge(df,dd_commt,on='商品ID')
      return df_pro

加入主程序

if __name__ == "__main__":
      create_table('shouji')
      for i in range(1,81):
            url = 'https://search.jd.com/s_new.php?keyword=手机&wq手机&ev=3613_104528%5E&page={0}&s=30'.format(i)
            rep = requesturl(url)
            df_pro = parse(rep)
            sava_oracle(df_pro)
            time.sleep(random.randrange(1,4))
            print('完成:',i)

关于怎样用Python爬取京东的价格和标题及评价等商品情况就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49006.html

(0)

相关推荐

  • 避免,自媒体视频如何避免侵权

    技术避免,自媒体视频如何避免侵权首先要对于我们自媒体来说,侵权的范围一般来说就是三类避免:视频类,图片类,字体配乐类。独角shou就因为字体侵权被索赔十几万,损失惨重。不过知名度不高的账号的话,一般不会收到音乐字体类的侵

    生活 2021年10月21日
  • android怎么新建activity(android activity怎么启动步骤)

    技术Android Activity怎么启动这篇文章主要介绍“Android Activity怎么启动”,在日常操作中,相信很多人在Android Activity怎么启动问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年12月18日
  • babel 配置

    技术babel 配置 babel 配置@babel/preset-env
    通过配置 useBuiltIns 参数有三种实现方式
    1. "entry"
    需要在入口文件添加import "core-js",

    礼包 2021年11月26日
  • gcc与arm-linux-gcc和arm-elf-gcc的关系是什么

    技术gcc与arm-linux-gcc和arm-elf-gcc的关系是什么gcc与arm-linux-gcc和arm-elf-gcc的关系是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解

    攻略 2021年10月22日
  • 如何在实体框架7中使用阴影属性

    技术Entity Framework 7中的影子属性怎么用这篇文章主要为大家展示了“Entity Framework 7中的影子属性怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并

    攻略 2021年12月16日
  • 同学过生日送什么礼物好,同学过生日,送什么礼物好呢

    技术同学过生日送什么礼物好,同学过生日,送什么礼物好呢送同学礼物的时候,相信只要用心,就一定会让你们之间的感情得到进一步的加深!尤其是在同学过生日的时候,送同学生日礼物推荐一定要推荐那些带有心意的生日礼物才行!不过送同学

    生活 2021年10月24日