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 相关文章推荐
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
python 3.6.4 安装配置方法图文教程
Sep 18 Python
python看某个模块的版本方法
Oct 16 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Python 求数组局部最大值的实例
Nov 26 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Python项目跨域问题解决方案
Jun 22 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
短波问题解答
2021/02/28 无线电
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
js post提交调用方法
2014/02/12 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
python实现矩阵乘法的方法
2015/06/28 Python
Python 多线程的实例详解
2017/09/07 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
python aiohttp的使用详解
2019/06/20 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
tensorflow的计算图总结
2020/01/12 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
python怎么判断素数
2020/07/01 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
酒店管理专业毕业生推荐信
2013/11/10 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
青春无悔演讲稿
2014/05/08 职场文书
公司节能减排倡议书
2014/05/14 职场文书
校运会口号
2014/06/18 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL