python 爬取豆瓣图书

#!-*-coding:utf-8-*-
import requests
import xlwt
from bs4 import BeautifulSoup
from collections import OrderedDict

class DouBanBookSpider(object):

    def __init__(self, book_type, quantity):
        self.book_type = book_type
        self.quantity = quantity
        self.url_list = []
        self.book_dict = OrderedDict()
        self.count = 0

    #获取url
    def get_url(self):
        count = 0
        while count < self.quantity+1:
            url = ‘https://book.douban.com/tag/%s?start=%d&type=S‘ % (self.book_type, count)
            self.url_list.append(url)
            #每页20本书,
            count += 20
        return self.url_list

    #爬虫主体
    def main_spider(self, url):
        rsp = requests.get(url)
        tag_bf = BeautifulSoup(rsp.text, ‘lxml‘)
        content = tag_bf.find_all(‘li‘, class_=‘subject-item‘)
        if content:
            for i in content:
                bt_bf = BeautifulSoup(str(i), ‘lxml‘)
                self.count += 1
                book_name = bt_bf.h2.a.get_text(strip=True)
                author = bt_bf.find(‘div‘, class_=‘pub‘).string.strip()
                comment_info = bt_bf.find(‘div‘, class_=‘star clearfix‘)
                co_bf = BeautifulSoup(str(comment_info), ‘lxml‘)
                grade = co_bf.find(‘span‘, class_=‘rating_nums‘)
                if grade:
                    grade = grade.string
                comment_count = co_bf.find(‘span‘, class_=‘pl‘).string.strip()
                self.book_dict[str(self.count)] = {‘序号‘: self.count, ‘书名‘: book_name, ‘评分‘: grade, ‘评论数‘: comment_count, ‘作者‘: author}
        else:
            return

    #执行爬虫
    def do_spider(self):
        for i in self.get_url():
            self.main_spider(i)

    #数据写入excel
    def write_excel(self):
        wb = xlwt.Workbook(encoding=‘ascii‘)
        ws = wb.add_sheet(self.book_type)
        style = xlwt.XFStyle()
        font = xlwt.Font()
        font.name = ‘Times New Roman‘
        font.bold = True
        style.font = font
        row0 = [‘序号‘, ‘书名‘, ‘评分‘, ‘评论数‘, ‘出版信息‘]
        for i in range(0, len(row0)):
            ws.write(0, i, row0[i], style)
        for k, v in self.book_dict.items():
            for j in range(0, len(v.values())):
                ws.write(int(k), j, list(v.values())[j])
        wb.save(‘%s.xlsx‘ % self.book_type)

if __name__ == "__main__":
    ds = DouBanBookSpider(‘中国历史‘, 2000)
    ds.do_spider()
    ds.write_excel()

原文地址:https://www.cnblogs.com/LouisZJ/p/8663166.html

时间: 2024-11-10 14:13:25

python 爬取豆瓣图书的相关文章

Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(str(i) for i in range(0, 226, 25))] 2.模块 requests获取网页源代码 lxml 解析网页 xpath提取 3.提取信息 4.可以封装成函数 此处没有封装调用 python代码: #coding:utf-8 import sys reload(sys) sys.

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

python爬取豆瓣小组700+话题加回复啦啦啦python open file with a variable name

需求:爬取豆瓣小组所有话题(话题title,内容,作者,发布时间),及回复(最佳回复,普通回复,回复_回复,翻页回复,0回复) 解决:1. 先爬取小组下,所有的主题链接,通过定位nextpage翻页获取总过700+条话题: 2. 访问700+ 链接,在内页+start=0中,获取话题相关的四部分(话题title,内容,作者,发布时间),及最佳回复.回复: 3. 在2的基础上,判断是否有回复,如果有回复才进一步判断是否有回复翻页,回复翻页通过nextpage 获取start=100.start=2

爬虫之爬取豆瓣图书的评论

from urllib import request from bs4 import BeautifulSoup as bs #爬取豆瓣最受关注图书榜 resp = request.urlopen('https://book.douban.com/chart?subcat=I') html_data = resp.read().decode('utf-8') #转化为BeautifulSoup对象 soup = bs(html_data,'html.parser') #搜索最受关注的图书列表 t

团队-Python 爬取豆瓣电影top250-需求分析

需求:爬取豆瓣电影TOP250 *向用户展示电影的排名,分数,名字,简介,导演,演员,前10条影评信息,链接信息 实现思路: 分析豆瓣电影TOP250的url规则, 编写模块获取相关url 获取全部相关页面的html代码 分析html中有关"排名,分数,名字,简介,导演,演员,前10条影评信息,链接信息"的标签 结合第三方工具包实现信息的提取 编写将"搜集信息"展示出来的模块

python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://movie.douban.com/subject/26752088/comments?start=0&limit=20&sort=new_score&status=P 第二页url https://movie.douban.com/subject/26752088/comments?sta

Python 爬取豆瓣TOP250实战

学习爬虫之路,必经的一个小项目就是爬取豆瓣的TOP250了,首先我们进入TOP250的界面看看. 可以看到每部电影都有比较全面的简介.其中包括电影名.导演.评分等. 接下来,我们就爬取这些数据,并将这些数据制成EXCEL表格方便查看. 首先,我们用requests库请求一下该网页,并返回他的text格式. 请求并返回成功! 接下来,我们提取我们所需要的网页元素. 点击“肖申克救赎”的检查元素. 发现它在div class = "hd" -> span class = "

Python项目之我的第一个爬虫----爬取豆瓣图书网,统计图书数量

今天,花了一个晚上的时间边学边做,搞出了我的第一个爬虫.学习Python有两个月了,期间断断续续,但是始终放弃,今天搞了一个小项目,有种丰收的喜悦.废话不说了,直接附上我的全部代码. 1 # -*- coding:utf-8 -*- 2 __author__ = 'Young' 3 4 import re,urllib #urllib : 网页访问,返回网页的数据.内容 5 def my_get(ID):# 封装成函数方便调用 6 html = urllib.urlopen("https://r

用Python爬取豆瓣Top250的电影标题

所以我们可以这么写去得到所有页面的链接我们知道标题是在 target="_blank"> 标题的位置</a> 之中 所以可以通过正则表达式找到所有符合条件的标题 将内容写入到表格保存起来 下面贴入完整代码 import requests, bs4, re, openpyxl url = 'https://www.douban.com/doulist/3936288/?start=%s' urls = [] 多少页 pages = 10 for i in range(p