91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣用Python爬取京東的價格和標題及評價等商品情況

發布時間:2021-10-26 10:06:01 來源:億速云 閱讀:309 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關怎樣用Python爬取京東的價格和標題及評價等商品情況,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

前言

代碼實現

import requests
from lxml import etree
import time
import random
import pandas as pd
import json
from sqlalchemy import create_engine
from sqlalchemy.dialects.oracle import DATE,FLOAT,NUMBER,VARCHAR2  
import cx_Oracle

先導入需要用的包

def create_table(table_name):
      conn = cx_Oracle.connect('user/password@IP:port/database')  
      cursor = conn.cursor ()
      create_shouji = '''      CREATE TABLE {}(      商品ID VARCHAR2(256),      價格 number(19,8),      店名 VARCHAR2(256) ,      店屬性 VARCHAR2(256) ,      標題 VARCHAR2(256) ,      評論 NUMBER(19),      優評論 NUMBER(19)      )      '''.format(table_name)
      cursor.execute(create_shouji)
      cursor.close()
      conn.close()

建表

def mapping_df_types(df_pro):
      dtypedict = {}
      for i, j in zip(df_pro.columns, df_pro.dtypes):
            if "object">

定義類型的映射

def sava_oracle(df_pro):
      engine = create_engine('oracle://user:password@ip:port/database')
      dtypedict = mapping_df_types(df_pro)
      df_pro.to_sql("shouji",con=engine,index=False,if_exists='append',dtype=dtypedict)

定義請求頭和請求方法

headers={
      '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爬取京東的價格和標題及評價等商品情況就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆德县| 雅江县| 武冈市| 拉萨市| 宽甸| 女性| 扎鲁特旗| 东海县| 泽库县| 灵川县| 广灵县| 富民县| 江川县| 武平县| 东方市| 馆陶县| 绥芬河市| 泰兴市| 绥滨县| 桐乡市| 沽源县| 酒泉市| 达州市| 上林县| 旬邑县| 应用必备| 玉林市| 呼图壁县| 浠水县| 思茅市| 工布江达县| 保靖县| 光泽县| 邯郸县| 德州市| 扎鲁特旗| 柞水县| 文化| 呼伦贝尔市| 建昌县| 巴马|