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

相关推荐

  • 抖音点赞3元100个,抖音怎么刷点赞上热门

    技术抖音点赞3元100个,抖音怎么刷点赞上热门大家务必要可以客观的应对抖音短视频粉丝领域的收费标准价钱规范,并并不是贵的才算是好的自然也并不一定划算的价钱全是不靠谱的,只是要可以融合自身的要求选择专业靠谱的服务平台,而且

    测评 2021年10月26日
  • pl什么意思,JM们,我到底PL了没啊?

    技术pl什么意思,JM们,我到底PL了没啊?我10月份做的造影,当时是备孕十一个月都没有好孕,去医院做了所有检查,除了造影,以前听说造影痛苦一直不敢做,医生也不建议我做,说是备孕时间短,后来等所有检查结果出来一切都没问题

    生活 2021年10月27日
  • 红烧肉的做法窍门,家庭版红烧肉怎么做不油腻

    技术红烧肉的做法窍门,家庭版红烧肉怎么做不油腻您好红烧肉的做法窍门,我是嘴嘴深夜食堂家庭版红烧肉只需要一坛黄酒,一块老姜,再加上盐,酱油,冰糖这几样东西,就可以做得非常好吃了,这个是跟着黄磊老师的做法做的哦1:五花肉清洗

    生活 2021年10月22日
  • springbootjpa整合多数据源(springboot怎么配置多个数据源)

    技术SpringBoot+Jpa项目配置双数据源怎么实现这篇文章主要介绍“SpringBoot+Jpa项目配置双数据源怎么实现”,在日常操作中,相信很多人在SpringBoot+Jpa项目配置双数据源怎么实现问题上存在疑

    攻略 2021年12月23日
  • WPF设置列内容居左、中、右

    技术WPF设置列内容居左、中、右 WPF设置列内容居左、中、右Style内容Style x:Key="contentLeftStyle" TargetType="{x:Type TextBlock}"S

    礼包 2021年12月18日
  • "docker build" requires exactly 1 argument(s).报错的解决方法

    技术"docker build" requires exactly 1 argument(s).报错的解决方法"docker build" requires exactly 1 argument(s).报错的解决方法,很

    攻略 2021年11月12日