python爬取豆瓣新书清单

  • 使用python3的requests库快速获取豆瓣图书推荐的新书清单,并保存书籍信息和图书缩略图图片到本地
  • #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    """
    @author:Aiker Zhao
    @file:douban3.py
    @time:上午10:34
    """
    import json
    import os
    import re
    from multiprocessing import Pool
    import requests
    from requests.exceptions import RequestException
    
    dir = ‘z:\\douban\\‘
    
    def get_web(url):
        try:
            rq = requests.get(url)
            if rq.status_code == 200:
                return rq.text
            return None
        except RequestException:
            return None
    
    def parse_web(html):
        pattern = re.compile(‘<li\sclass="">.*?cover".*?href="(.*?)"\stitle="(.*?)".*?img\***c="(.*?)"‘ +
                             ‘.*?class="author">(.*?)<.*?year">(.*?)<.*?publisher">(.*?)<.*?</li>‘, re.S)
        results = re.findall(pattern, html)
        # print(results)
        for i in results:
            # url, title, img, author, yeah, publisher = i
            # author = re.sub(‘\s‘, ‘‘, author)
            # yeah = re.sub(‘\s‘, ‘‘, yeah)
            # publisher = re.sub(‘\s‘, ‘‘, publisher)
            # print(url, title, img, author, yeah, publisher)
            yield {
                ‘title‘: i[1],
                ‘url‘: i[0],
                ‘img‘: i[2],
                ‘author‘: i[3].strip(),
                ‘yeah‘: i[4].strip(),
                ‘publisher‘: i[5].strip()
            }
            # print(url, title, img, author, yeah, publisher)
            # return img,title
    
    def save_image(title, img):
        images = dir + title + ‘.jpg‘
        if os.path.exists(images):
            pass
        else:
            with open(images, ‘wb‘) as f:
                f.write(requests.get(img).content)
                f.close()
    
    def save_info(content):
        info = dir + ‘info.txt‘
        with open(info, ‘a‘, encoding=‘utf-8‘) as fd: #防止出现ascII
            fd.write(json.dumps(content, ensure_ascii=False) + ‘\n‘) ##防止出现ascII
            fd.close()
    
    def main():
        url = ‘https://book.douban.com/‘
        html = get_web(url)
        # parse_web(html)
        for i in parse_web(html):
            print(i)
            save_info(i)
            save_image(i.get(‘title‘), i.get(‘img‘))
    
    if __name__ == ‘__main__‘:
        main()


    • 心得:

      • 需要注意正则的匹配规则的准确度,否则会没有响应,或者无限超时

    原文地址:https://blog.51cto.com/m51cto/2373119

    时间: 2024-10-28 20:19:00

    python爬取豆瓣新书清单的相关文章

    利用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

    团队-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爬取豆瓣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

    python爬取豆瓣首页热门栏目详细流程

    记录一下爬取豆瓣热门专栏的经过,通过这篇文章,你能学会requests,HTMLParser,json的基本使用,以及爬取网页内容的基本思路. 使用模块 1,获取豆瓣首页代码:首先我们需要访问豆瓣页面,获取首页的源码.这里推荐使用第三方库:requests,相比python内置的 urllib 模块,requests使用起来更简单,功能更全面 2,对获取的代码进行解析:对于解析html代码,已经有很多功能强大的框架能使用,如Scrapy,PySpider,Beautiful Soup等,这里我们

    python爬取豆瓣250存入mongodb全纪录

    用了一周的时间总算搞定了,跨过了各种坑,总算调试成功了,记录如下: 1.首先在cmd中用命令行建立douban爬虫项目 scrapy startproject douban 2.我用的是pycharm,导入项目后, 1)在items.py中定义爬取的字段 items.py代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import scrapy class DoubanBookItem(scrapy.Item):     name

    python爬取豆瓣电影首页超链接

    什么是爬虫?  我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛.把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息.可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了. 代码: 1 from urllib import request 2 from collections import de