Pyhthon爬取豆瓣8.5分以上的图书信息

 前置:安装了Python及包管理器,请参考https://blog.csdn.net/u010622242/article/details/84979705

1、安装爬取用到的模块selenium、urllib、xlwt

在CMD输入pip install selenium回车;pip install urllib回车;pip install xlwt回车;即可,

pip(包管理器)相关请阅读https://blog.csdn.net/u010622242/article/details/84979705

 2、在txt文件中写如下代码,保存为paqu.py,注意代码的缩进,python对代码缩进要求很严格。

#coding:utf-8
from selenium import webdriver #自动化测试模块
from urllib import parse #url过滤特殊字符
import xlwt #excel写入用

self = webdriver.Chrome()  #指定selenium进行自动化操作时选用谷歌浏览器
workbook = xlwt.Workbook(encoding = 'ascii') #创建workbook
k=0;
fenlei=[ 
'职场','互联网','用户体验' 
]
try:
	for f in fenlei:
		print(f)
		worksheet = workbook.add_sheet(f) #每各标签创建一个sheet,sheet名为标签名
		i=0;#记录每个标签爬取到了多少符合条件的数据
		j=0;#记录每个标签有多少数据结构不规范的数据
		self.get('https://book.douban.com/tag/'+parse.quote(f)+'?start=0&type=T')  #打开指定标签第一页的网页
		pagesize = int(self.find_elements_by_class_name('paginator')[0].find_element_by_xpath('.//a[last()]').text) #获取该标签下有多少页数据
		if pagesize>50: #不知道为什么,每个标签下,只能浏览前50页
			pagesize=50
		for num in range(0,pagesize):
			self.get('https://book.douban.com/tag/'+parse.quote(f)+'?start='+str(num*20)+'&type=T') #打开指定标签、指定页数的网页
			total_book = self.find_element_by_id('subject_list') #获得当页图书列表所在容器
			books = total_book.find_elements_by_class_name('info')   #获得当页所有包含单个图书信息的容器,返回一个数组
			for book in books:  #通过for循环依次把每一本图书的内容取出来
				try:
					fenshu= book.find_element_by_xpath('.//div[2]/span[2]').text #第二个div下的第二个span
					if float(fenshu)>=8.5: #如果是9.5分以上就写入excel
						title= book.find_element_by_xpath('.//a[1]').text #获取书名
						zuozhe= book.find_element_by_xpath('.//div[1]').text.split('/',1)[0] #获取作者
						jianjie= book.find_element_by_xpath('.//p[1]').text #获取简介
						
						worksheet.write(i,0,fenshu); #分数写入第i行的第一列
						worksheet.write(i,1,title); #书名写入第i行的第二列
						worksheet.write(i,2,zuozhe); #作者写入第i行的第三列
						worksheet.write(i,3,jianjie); #简介写入第i行的第四列
						i=i+1
				except: #在取数据时,有可能会存在数据结构不规范的情况,跳过执行下一条就好
					j+=1
			print('第' + str(num) + '页,已获得' + f + '书籍' + str(i) +'本;') #数字和字符串拼接时,需要先把数字转为字符串
		print('数据结构不规范' + str(j))
except Exception as e:
	k+=1
	print('错误信息:'+e)
workbook.save('douban85.xls') #保存workbook
self.quit() #爬取数据完成后关闭浏览器
#https://www.cnblogs.com/yoyoketang/p/6557421.html  find_element用法
#https://blog.csdn.net/u012941152/article/details/83011110 find_element用法

3、下载并使用谷歌浏览器驱动chromedriver

移步https://blog.csdn.net/u010622242/article/details/84979997

4、执行py文件

在cmd命令窗口,进入paqu.py文件所在的目录,然后执行:python 爬取.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值