怎样用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)

相关推荐

  • 寻寻觅觅的意思,如何解读李清照的《声声慢》

    技术寻寻觅觅的意思,如何解读李清照的《声声慢》李清照是我国文学史上杰出的女作家,宋词婉约派的主要代表人物,其作品对后世有着较大的影响寻寻觅觅的意思。《声声慢》可能是易安后期的作品。李清照所处的时代,是烽火连天,山河破碎的

    生活 2021年10月22日
  • FireMonkey3D之中国象棋程序,二)制定规则

    技术FireMonkey3D之中国象棋程序,二)制定规则 FireMonkey3D之中国象棋程序(二)制定规则声明:本程序设计参考象棋巫师源码(开发工具dephi 11,建议用delphi 10.3以上

    礼包 2021年12月13日
  • javascript正则表达式怎么写

    技术javascript正则表达式怎么写本篇内容介绍了“javascript正则表达式怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月26日
  • competed,第29届奥运会英语作文

    技术competed,第29届奥运会英语作文A Successful OlympicsAs is known to us,the 29th Olympics was held in Beijing,China in 20

    生活 2021年10月26日
  • 面部不对称,人的脸不对称是怎么回事,

    技术面部不对称,人的脸不对称是怎么回事,颜面不对称是每个人都有的现象面部不对称,但是用肉眼看得出来的话不对称的程度就比较严重了。一般本人或他人的颜面不对称用肉眼是看不出来的,而且一般都是以每个人的脸是对称的成见看的,所以

    生活 2021年10月25日
  • 如何全面解析Perl命令行应用

    技术如何全面解析Perl命令行应用本篇文章给大家分享的是有关如何全面解析Perl命令行应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。和大家重点讨论一下P

    攻略 2021年11月12日