Python抓取京东图书评论数据

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:    京东图书评论有非常丰富的信息,这里面就包含了购买日期、书名、作者、好评、中评、差评等等。以购买日期为例,使用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()



   
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
11 1
|
5天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
12 0
|
6天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
6天前
|
数据采集 数据处理 开发者
Python 中的数据处理技巧:高效数据操作的艺术
Python 在数据处理方面表现卓越,为开发者提供了丰富的工具和库以简化数据操作。在本文中,我们将探讨 Python 中数据处理的一些技巧,包括数据清洗、数据转换以及优化数据操作的最佳实践。通过掌握这些技巧,您可以在 Python 中更加高效地处理和分析数据。
|
3月前
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
78 2
Python爬虫案例:抓取猫眼电影排行榜
|
Web App开发 iOS开发 Python
|
18天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
5天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
19 5
|
7天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
10 0