爬取豆瓣网图书TOP250的信息

爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名、书本的链接、作者、出版社和出版时间、书本的价格、评分和评价,并把爬取到的数据存储到本地文件中。

参考网址:https://book.douban.com/top250

注意:使用正则表达式时,不要在Elements选项卡中直接查看源代码,因为那的源码可能经过Javascript渲染而与原始请求不同,而是需要从Network选项卡中查看源码。

import re
import json
import time
import requests
#from requests.exceptions import RequestException

def get_one_page(url):
    try:
        headers = {
            ‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) ‘
            + ‘AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36‘
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

def parse_one_page(html, start):
    #.*? 非贪婪匹配
    items1 = re.findall(‘href="(.*?)".*?title="(.*?)".*?‘, html)
    items2 = re.findall(‘pl">(.*?\/)?(.*?\/)?(.*?)\/(.*?)\/(.*?)<\/p>‘, html)#()?有的书没写作者
    items3 = re.findall(‘nums">(.*?)<\/span>.*?<\/div>(.*?)?<\/td>‘, html, re.S)#有的书没写书评
    #re.S使.匹配包括换行在内的所有字符
    for i in range(25):
        yield{
            ‘page‘: start//25+1,
            ‘ranking‘: start+i+1,
            ‘book‘: items1[i][1],
            ‘link‘: items1[i][0],

            ‘author‘: items2[i][0].replace(‘/‘, ‘‘).strip(),
            ‘press‘: items2[i][2].strip(),
            ‘time‘: items2[i][3].strip(),
            ‘price‘: items2[i][4].strip(),

            ‘grade‘: items3[i][0],
            #有书评的则要去除两边的源码
            ‘evaluation‘: items3[i][1].strip().replace("</span>\n              </p>", ‘‘)            .replace(‘<p class="quote" style="margin: 10px 0; color: #666">\n                  <span class="inq">‘, ‘‘)
        }

def write_to_file(content):
    with open(‘doubanBookTop250.txt‘, ‘a‘, encoding=‘utf-8‘) as f:
        f.write(json.dumps(content, ensure_ascii=False) + ‘\n‘)

def main(start):
    url = ‘https://book.douban.com/top250?start=‘ + str(start)
    html = get_one_page(url)
    for item in parse_one_page(html, start):
        #print(‘-------‘)
        print(item)
        #write_to_file(item)

if __name__ == ‘__main__‘:
    for i in range(10):
        main(start=i * 25)
        time.sleep(1)

原文地址:https://www.cnblogs.com/oeong/p/12127477.html

时间: 2024-10-13 15:44:17

爬取豆瓣网图书TOP250的信息的相关文章

爬取豆瓣网评论最多的书籍

相信很多人都有书荒的时候,想要找到一本合适的书籍确实不容易,所以这次利用刚学习到的知识爬取豆瓣网的各类书籍,传送门https://book.douban.com/tag/?view=cloud. 首先是这个程序的结构,html_downloader是html下载器,html_outputer是导出到Excel表,html_parser是解析页面,make_wordcloud是制作词云,spided_main是程序入口,url_manager是URL管理器 主要实现思路是先请求下载需要的html,

Scrapy爬虫(5)爬取当当网图书畅销榜

??本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下: ??我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲,可以参考上一篇博客,我们只需要修改items.py文件,以及新建一个爬虫文件BookSpider.py. ??items.py文件的代码如下,用来储存每本书的排名,书名,作者,出版社,价格以及评论数. import scrapy class BookspiderItem(scrapy.Item):

爬虫之爬取豆瓣热门图书的名字

import requests #requests模块用于HTTP请求 import codecs #codecs模块用于文件操作 from bs4 import BeautifulSoup #beautifulSoup库用于对html代码进行解析 #要爬取的地址 URL="https://book.douban.com/top250" #user-agent,模仿浏览器,防止被目标网站反爬 HEADERS = { "User-Agent":"Mozill

爬取豆瓣电影排行top250

功能描述: 使用的库 1.time 2.json 3.requests 4.BuautifulSoup 5.RequestException 上机实验室: """ 作者:李舵 日期:2019-4-27 功能:抓取豆瓣电影top250 版本:V1.0 """ import time import json import requests from bs4 import BeautifulSoup from requests.exceptions i

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爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对比,你可以进一步加深Python爬虫的印象.同时,文章给出了我以前关于爬虫的基础知识介绍,方便新手进行学习.        总之,希望文章对你有所帮助,如果存在不错或者错误的地方,还请海涵~ 一. DOM树结构分析 豆瓣Top250电影网址:https://movie.douban.com/top2

爬取豆瓣上某个用户标记的想读的图书信息

一,程序的功能和适用人群 程序的功能是爬取豆瓣用户标记的想读的图书,将图书信息保存为excel文件.适用于想备份在豆瓣上标记的图书的用户. 二,执行效果 程序执行后会得到一个excel文件,保存了用户想要读的图书信息,如下图: 三,技术路线 技术路线是选取用户在豆瓣上标记的想读的图书的首页url作为种子url,如下图 遍历这一页中所有的图书信息,通过每本图书链接抓取每本图书的具体信息,以下左图是首页的图书信息,右图是通过左图的链接进入的要爬取的具体的图书信息. 在爬取首页的url中的所有图书时,

爬取豆瓣电影Top250和和豆瓣图书

豆瓣电影top250url:https://movie.douban.com/top250?start=0&filter= 首先f12进入检查CTRL +shift +c定位到标题 可以看到电影标题在<a>标签下,所以我们只要定位到a标签下就可以了,我们找到<a>标签的最上一级标签<div>标签属性class=item,好了现在我们大概有了思路了,现在让我来写代码吧 第一步:设置请求头headers headers = {'User-Agent': 'Mozil

运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250

对于scrapy我们前面已经介绍了简单的应用,今天我们用一个完整的例子,爬取豆瓣电影TOP250来做一个小的练习,把scrapy阶段做一个总结. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 2.1 需要保存的数据 首先确定我们要获取的内容,在items中定义字段,来将非结构化数据生成结构化数据,获取的内容主要包括:排名.电影名称.得分.评论人数.如下