怎样用Python爬取京东的价格和标题及评价等商品情况
发表于:2024-09-29 作者:千家信息网编辑
千家信息网最后更新 2024年09月29日,这篇文章将为大家详细讲解有关怎样用Python爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言代码实现impor
千家信息网最后更新 2024年09月29日怎样用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安全错误
数据库的锁怎样保障安全
武汉大学数据库检索视频
莱芙玛软件开发
s数据库表结构
北京玖爱网络技术有限公司
遵义游戏软件开发有限公司
有关网络安全的知识问题
开发工具网络安全加固
长沙市天心区兰耀软件开发服务部
烟草网络安全宣传周
vb用txt当数据库
广州诺特软件开发福利怎样
网络安全教育分哪几个模块
数据库更新维护是什么技术
网络安全护城河
针式无线打印机服务器推荐
鲁辉网络安全
跨国网络安全公司如何注册
外汇平台数据库
有什么软件开发ios app
网络安全知识宣讲新闻稿
南京网络安全信息
熹妃传怎么找回服务器
苹果手机无服务器是怎么回事
慧运营网络技术
网络安全校园安全日
软件开发企业有哪些政府补贴
戴尔服务器 error1
数据仓库与数据库是一个概念吗
华医百科中医影响力数据库
管理app软件开发