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代码制作configure文件示例
Jul 28 Python
跟老齐学Python之数据类型总结
Sep 24 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
详解Python 切片语法
Jun 10 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
python 统计文件中的字符串数目示例
Dec 24 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
python绘制玫瑰的实现代码
Mar 02 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 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开发入门教程之面向对象
2006/12/05 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP内置加密函数详解
2016/11/20 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python对象的属性访问过程详解
2020/03/05 Python
python3字符串输出常见面试题总结
2020/12/01 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
VC++笔试题
2014/10/13 面试题
查摆问题自我剖析材料
2014/08/18 职场文书
工伤私了协议书范本
2014/11/24 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书