使用python爬取豆瓣读书小说标签下的所有图书

本文介绍了如何使用Python爬虫抓取豆瓣读书中小说标签下的所有图书信息。通过编写url管理器保存每页图书URL,利用urllib2模块下载网页并设置超时控制,使用BeautifulSoup解析网页内容,提取书名、作者、评分和简介,并通过xlwt库将数据导出到Excel文件。最后展示了爬取结果的html和excel格式。
摘要由CSDN通过智能技术生成
   在慕课网学习了python开发简单爬虫,爬取了python百度百科相关1000个词条页面。了解了简单爬虫的基本结构。为了进一步掌握简单爬虫,尝试着爬取豆瓣图书小说标签下的所有图书的书名,作者,评分,简介,并使用网页进行输出。
   实现方式如下:
1.编写主调度函数:
豆瓣读书小说标签下,每页共20本图书,总共99页。url格式为“https://book.douban.com/tag/小说?start=(20的倍数)&type=T”,每页可获取到20本图书的url链接并进行爬取小说的具体信息。循环99次,可完成本次爬取目标。中间加入异常处理,防止有些图书的url失效等异常情况。加入time.sleep(),每次爬取后停止一段时间,防止豆瓣的反爬虫识别出程序导致爬虫失败。
  #coding=UTF-8

from douban import d_urlmanagement, d_httpdownloader, d_httpparser,\
    d_httpoutputer

import time
import sys 
reload(sys) 
sys.setdefaultencoding('utf8')

class DoubanMain(object):
    def __init__(self):
        self.durls=d_urlmanagement.Durlmanagement()
        self.ddownload=d_httpdownloader.Dhttpdownloader()
        self.dparser=d_httpparser.Dhttpparser()
        self.doutputer=d_httpoutputer.Dhttpoutputer()

    def crow(self):        
        pag_num=0
        while(1):
            #https://book.douban.com/tag/小说?start=40&type=T

            url='https://book.douban.com/tag/小说'+'?start='+str(pag_num*20)+'&type=T'
            print '%d page'%pag_num
            time.sleep(0.1)
            html_cont=self.ddownload.download(url)

            new_urls=self.dparser.parser(html_cont,url)

            self.durls.add_new_urls(new_urls)
            n=1
            while self.durls.has_new_url():
                try:
                    book_url= self.durls.get_new_url()

                    time.sleep(0.1)
                    book_cont=self.ddownload.download(book_url)

                    new_datas=self.dparser.book_parser(book_url,book_cont)

                    self.doutputer.collectdata(new_datas)
                    print n
                    n=n+1   
                except:
                    print 'error'
                    continue

            if pag_num >=51:
                break   
            pag_num = pag_num +1
        self.doutputer.ouput()

if __name__=='__main__':

    douban=DoubanMain()
    douban.crow()


2.编写url管理器:
url管理器,用于豆瓣读书小说标签页下每页的20本图书的url保存及提取。

#coding=UTF-8
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值