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复制与引用用法分析
Apr 08 Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 Python
解决Python传递中文参数的问题
Aug 04 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python实现通讯录功能
Feb 22 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
详解Python中的测试工具
Jun 09 Python
python处理“
Jun 10 Python
python生成并处理uuid的实现方式
Mar 03 Python
详解Python3中的 input() 函数
Mar 18 Python
如何一键升级Python所有包
Nov 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
关于crontab的使用详解
2013/06/24 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
php写的AES加密解密类分享
2014/06/20 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
javascript 框架小结 个人工作经验
2009/06/13 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
js实现常用排序算法
2016/08/09 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python 获取div标签中的文字实例
2018/12/20 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
求职自荐书范文
2013/12/04 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
服装创业计划书范文
2014/02/05 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
开业典礼致辞
2015/07/29 职场文书
Django migrate报错的解决方案
2021/05/20 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
MySQL普通表如何转换成分区表
2022/05/30 MySQL