Python抓取京东图书评论数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:    京东图书评论有非常丰富的信息,这里面就包含了购买日期、书名、作者、好评、中评、差评等等。以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行。相关的解释我都在程序里加注了: from selenium import webdri...

   京东图书评论有非常丰富的信息,这里面就包含了购买日期、书名、作者、好评、中评、差评等等。以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行。相关的解释我都在程序里加注了:

  1. from selenium import webdriver
  2. from bs4 import BeautifulSoup
  3. import re
  4. import win32com.client
  5. import threading,time
  6. import MySQLdb

  7. def mydebug():
  8.     driver.quit()
  9.     exit(0)

  10. def catchDate(s):
  11.     """页面数据提取"""
  12.     soup = BeautifulSoup(s)
  13.     z = []
  14.     global nowtimes
  15.     
  16.     m = soup.findAll("div",class_="date-buy")
  17.     for obj in m:
  18.         try:
  19.             tmp = obj.find('br').contents
  20.         except Exception, e:
  21.             continue
  22.         if(tmp != ""):
  23.             z.append(tmp)
  24.             nowtimes += 1
  25.     return z

  26. def getTimes(n,t):
  27.     """获取当前进度"""
  28.     return "当前进度为:" + str(int(100*n/t)) + "%"


  29. #———————————————————————————————————| 程序开始 |—————————————————————————————————
  30. #确定图书大类
  31. cate = {"3273":"历史","3279":"心理学","3276":"政治军事","3275":"国学古籍","3274":"哲学宗教","3277":"法律","3280":"文化","3281":"社会科学"}

  32. #断点续抓
  33. num1 = input("bookid:")
  34. num2 = input("pagenumber:")

  35. #生成图书大类链接,共需17355*20 = 347100次
  36. totaltimes = 347100.0
  37. nowtimes = 0

  38. #开启webdirver的PhantomJS对象
  39. #driver = webdriver.PhantomJS()
  40. driver = webdriver.Ie('C:\Python27\Scripts\IEDriverServer')
  41. #driver = webdriver.Chrome('C:\Python27\Scripts\chromedriver')

  42. #读出Mysql中的评论页面,进行抓取
  43. # 连接数据库 
  44. try:
  45.     conn = MySQLdb.connect(host='localhost',user='root',passwd='',db='jd')
  46. except Exception, e:
  47.     print e
  48.     sys.exit()

  49. # 获取cursor对象
  50. cursor = conn.cursor()
  51. sql = "SELECT * FROM booknew ORDER BY pagenumber DESC"
  52. cursor.execute(sql)
  53. alldata = cursor.fetchall()

  54. flag = 0
  55. flag2 = 0

  56. # 如果有数据返回就循环输出,http://club.jd.com/review/10178500-1-154.html
  57. if alldata:
  58.     for rec in alldata:
  59.         #rec[0]--bookid,rec[1]--cateid,rec[2]--pagenumber
  60.         if(rec[0] != str(num1) and flag == 0):
  61.             continue
  62.         else:
  63.             flag = 1
  64.         for p in range(num2,rec[2]):
  65.             if(flag2 == 0):
  66.                 num2 = 0
  67.                 flag2 = 1
  68.             p += 1
  69.             link = "http://club.jd.com/review/" + rec[0] + "-1-" + str(p) + ".html"
  70.             #抓网页
  71.             driver.get(link)
  72.             html = driver.page_source
  73.             #抓评论
  74.             buydate = catchDate(html)
  75.             #写入数据库
  76.             for z in buydate:
  77.                 sql = "INSERT INTO ljj (id, cateid, bookid, date) VALUES (NULL, '" + rec[0] + "','" + rec[1] + "','" + z[0] + "');"
  78.                 try:
  79.                     cursor.execute(sql)
  80.                 except Exception, e:
  81.                     print e
  82.             conn.commit()
  83.         print getTimes(nowtimes,totaltimes)

  84. driver.quit()
  85. cursor.close()
  86. conn.close()



   
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
10 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
4天前
|
算法 Python
揭秘!Python数据魔术师如何玩转线性回归,让你的预测精准到不可思议
【9月更文挑战第13天】在数据科学领域,线性回归以其优雅而强大的特性,将复杂的数据关系转化为精准的预测模型。本文将揭秘Python数据魔术师如何利用这一统计方法,实现令人惊叹的预测精度。线性回归假设自变量与因变量间存在线性关系,通过拟合直线或超平面进行预测。Python的scikit-learn库提供了简便的LinearRegression类,使模型构建、训练和预测变得简单直接。
15 5
|
6天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
20 5
|
6天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
20 5
|
数据采集 Python Windows
python爬虫-抓取百度贴吧帖子图片
本爬虫可以爬取百度贴吧帖子中的图片,代码有待完善,欢迎大家指教! 出处:https://github.com/jingsupo/python-spider/blob/master/day03/07tieba.
1029 0
|
2天前
|
Python
Python编程中的异常处理:理解与实践
【9月更文挑战第14天】在编码的世界里,错误是不可避免的。它们就像路上的绊脚石,让我们的程序跌跌撞撞。但是,如果我们能够预见并优雅地处理这些错误,我们的程序就能像芭蕾舞者一样,即使在跌倒的边缘,也能轻盈地起舞。本文将带你深入了解Python中的异常处理机制,让你的代码在面对意外时,依然能保持优雅和从容。
137 73
|
2天前
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
1天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从零基础到实战应用
【9月更文挑战第15天】本文将引导读者从零开始学习Python编程,通过简单易懂的语言和实例,帮助初学者掌握Python的基本语法和常用库,最终实现一个简单的实战项目。文章结构清晰,分为基础知识、进阶技巧和实战应用三个部分,逐步深入,让读者在学习过程中不断积累经验,提高编程能力。