怎样用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安全错误
数据库的锁怎样保障安全
公安机关网络安全等级保护
苏州车载网络技术推荐咨询
数据库中文版安装
台湾叶丙成数据库
大专软件开发教材有哪些
入侵检测 网络安全
计算机网络安全方面的
网络安全 通报
通讯及网络技术知识
不同数据库名字可以相同吗
网络安全的问答题
贵州新濮维网络技术有限公司
共筑网络安全是什么
用友的软件开发平台
同时更新数据库俩表
转区服务器升级
软件开发属于金融
制造业sfc软件开发
许昌魏都慕贤网络技术公司
互联网根服务器在美国吗
软件开发人员需要哪些培训
深圳运维服务软件开发报价
顶级域名服务器管理二级域名
阜阳门店管理软件开发外包公司
洛阳果鲜乐网络技术有限公司
网络营销存在网络安全隐患
企业网络安全搞笑段子
buyvm数据库
vba下载数据库到txt
软件开发感谢信