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基于xml parse实现解析cdatasection数据
Sep 30 Python
python实现决策树ID3算法的示例代码
May 30 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
python下载微信公众号相关文章
Feb 26 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python实现括号匹配方法详解
Feb 10 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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处理斐波那契数列非递归方法
2012/02/04 PHP
关于svn冲突的解决方法
2013/06/21 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
js版本A*寻路算法
2006/12/22 Javascript
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
js实现简单的倒计时
2021/01/28 Javascript
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python实现单词拼写检查
2015/04/25 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python探索之pLSA实现代码
2017/10/25 Python
Python生成数字图片代码分享
2017/10/31 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
迎新晚会邀请函
2014/02/01 职场文书
红旗方阵解说词
2014/02/12 职场文书
毕业留言寄语大全
2014/04/10 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
Python访问Redis的详细操作
2021/06/26 Python
python多线程方法详解
2022/01/18 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android