怎样用Python爬取京东的价格和标题及评价等商品情况
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章将为大家详细讲解有关怎样用Python爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言代码实现impor
千家信息网最后更新 2025年02月19日怎样用Python爬取京东的价格和标题及评价等商品情况
这篇文章将为大家详细讲解有关怎样用Python爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
前言
代码实现
import requestsfrom lxml import etreeimport timeimport randomimport pandas as pdimport jsonfrom sqlalchemy import create_enginefrom 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爬取京东的价格和标题及评价等商品情况就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
商品
评论
价格
标题
评价
属性
店名
情况
京东
内容
手机
文章
更多
知识
篇文章
不错
主体
主程序
代码
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重庆程序软件开发如何收费
常见公司的软件开发模式
长沙微易网络技术咨询公司
中国服务器行业前景
2020网络安全创新大赛
网络安全 分中心和体系
库尔勒存储服务器维保
饥荒专用服务器怎么给管理员
方舟生存进化买服务器
大众钥匙服务器关闭
什么机关负责网络安全
襄州区检察院网络安全
data web数据库建立
合肥聚鑫科技互联网有限公司
软件开发公司产品经理职责
网络技术部门面试
计算机网络技术编址
软件开发交付物清单表
经行MD5加密后存入数据库
建网站买服务器
网络技术如何用于教研
数据库概念设计常用模型
澳门绿色生鲜配送软件开发
上海新一代软件开发过程检测中心
data web数据库建立
国家网络安全手抄报大全
通州西集网络安全产业园工作
移民服务器商会管理员
无锡常见网络技术费用
音创点歌机服务器号