Python抓取京东图书评论数据


Posted in Python onAugust 31, 2014

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

from selenium import webdriver
from bs4 import BeautifulSoup
import re
import win32com.client
import threading,time
import MySQLdb

def mydebug():
    driver.quit()
    exit(0)

def catchDate(s):
    """页面数据提取"""
    soup = BeautifulSoup(s)
    z = []
    global nowtimes
   
    m = soup.findAll("div",class_="date-buy")
    for obj in m:
        try:
            tmp = obj.find('br').contents
        except Exception, e:
            continue
        if(tmp != ""):
            z.append(tmp)
            nowtimes += 1
    return z

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

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

#断点续抓
num1 = input("bookid:")
num2 = input("pagenumber:")

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

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

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

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

flag = 0
flag2 = 0

# 如果有数据返回就循环输出,http://club.jd.com/review/10178500-1-154.html
if alldata:
    for rec in alldata:
        #rec[0]--bookid,rec[1]--cateid,rec[2]--pagenumber
        if(rec[0] != str(num1) and flag == 0):
            continue
        else:
            flag = 1
        for p in range(num2,rec[2]):
            if(flag2 == 0):
                num2 = 0
                flag2 = 1
            p += 1
            link = "http://club.jd.com/review/" + rec[0] + "-1-" + str(p) + ".html"
            #抓网页
            driver.get(link)
            html = driver.page_source
            #抓评论
            buydate = catchDate(html)
            #写入数据库
            for z in buydate:
                sql = "INSERT INTO ljj (id, cateid, bookid, date) VALUES (NULL, '" + rec[0] + "','" + rec[1] + "','" + z[0] + "');"
                try:
                    cursor.execute(sql)
                except Exception, e:
                    print e
            conn.commit()
        print getTimes(nowtimes,totaltimes)

driver.quit()
cursor.close()
conn.close()

Python 相关文章推荐
Python卸载模块的方法汇总
Jun 07 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python实现list由于numpy array的转换
Apr 04 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
Python中一些深不见底的“坑”
Jun 12 Python
详解python破解zip文件密码的方法
Jan 13 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
python脚本框架webpy的url映射详解
Nov 20 Python
python开发制作好看的时钟效果
May 02 Python
Python深入学习之内存管理
Aug 31 #Python
Python深入学习之装饰器
Aug 31 #Python
Python深入学习之闭包
Aug 31 #Python
Python深入学习之对象的属性
Aug 31 #Python
Python深入学习之上下文管理器
Aug 31 #Python
Python深入学习之特殊方法与多范式
Aug 31 #Python
python中的reduce内建函数使用方法指南
Aug 31 #Python
You might like
PHP中文竖排转换实现方法
2015/10/23 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
python迭代器与生成器详解
2016/03/10 Python
Python批量查询域名是否被注册过
2017/06/21 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Python实现八皇后问题示例代码
2018/12/09 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Python ini文件常用操作方法解析
2020/04/26 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
软件测试面试题
2015/10/21 面试题
大学生军训自我评价分享
2013/11/09 职场文书
八一慰问活动方案
2014/02/07 职场文书
环保倡议书
2014/04/14 职场文书
幼儿园小班评语
2014/04/18 职场文书
股票投资建议书
2014/05/19 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
教师自我剖析材料
2014/09/29 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2015年班干部工作总结
2015/04/29 职场文书
庆七一主持词
2015/06/29 职场文书
高二数学教学反思
2016/02/18 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS