# -*- coding: utf-8 -*-
"""
Created on Thu Oct 31 16:14:02 2019

@author: DELL
"""

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re

urllst = ['https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=0&type=T',
'https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=20&type=T',
'https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=40&type=T',
'https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=60&type=T',
'https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=80&type=T',
'https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=120&type=T'
]
# 添加网址,网站一页20条数据,所以start=0,20,40等

def get_data(ui):
ri = requests.get(url=ui)
soupi = BeautifulSoup(ri.text,'lxml') #解析网页
lis = soupi.find('ul',class_="subject-list").find_all('li')
#解析网页后根据ul与class_标签查找以及所有li标签
lst = []
for li in lis:
dic = {}
dic['书名'] = re.sub(r'\s+','',li.h2.text)
infors = re.sub(r'\s+','',li.find('div',class_="pub").text)
dj = re.search(r'.*/([.\d]*)\D*',infors)
if dj:
dic['定价'] = dj.group(1)
#匹配定价信息,如果匹配成功则添加进字典
nf = re.search(r'.*/([-\d]*)/',infors)
if nf:
dic['年份'] = nf.group(1)

#匹配年份信息,如果匹配成功则添加进字典
lst.append(dic)
return lst
get_data(urllst[0])
datalst = []

for u in urllst:
try:
datalst.extend(get_data(u))
print('采集数据成功,总共采集%i条数据'% len(datalst))
except:
errorlst.append(u)
print('采集数据失败,数据网址为 :',u)
print(datalst)
df = pd.DataFrame(datalst)
df.to_csv('C:/Users/DELL/Desktop/资料/douban.csv')

采集douban的更多相关文章

  1. python 豆瓣采集

    新手今天刚学python~~~ 有点凌乱~勉强看吧 只能算是给新手看看,见谅 简单版本的 豆瓣采集美图~~~~~~ 美女天天有 有木有~~~ python 3.4 sqlite3 BeautifulS ...

  2. 【原创】python 豆瓣采集

    新手今天刚学python~~~ 有点凌乱~勉强看吧 只能算是给新手看看,见谅 简单版本的 豆瓣采集美图~~~~~~ 美女天天有 有木有~~~ python 3.4 sqlite3 BeautifulS ...

  3. C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

    第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...

  4. 再谈C#采集,一个绕过高强度安全验证的采集方案?方案很Low,慎入

    说起采集,其实我是个外行,以前拔过阿里巴巴的客户数据,在我博客的文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子) 中,介绍过采集用的工具,其实很Low的,分析 ...

  5. iOS从零开始学习直播之2.采集

      直播的采集由采集的设备(摄像头.话筒)不同分为视频采集和音频采集,本篇文章会分别介绍. 1.采集步骤   1.创建捕捉会话(AVCaptureSession),iOS调用相机和话筒之前都需要创建捕 ...

  6. 让OMCS支持更多的视频采集设备

    有些OMCS用户在他的系统使用了特殊的视频采集卡作为视频源(如AV-878采集卡),虽然这些采集卡可以虚拟为一个摄像头,但有些视频采集卡需要依赖于自带了sdk才能正常地完成视频采集工作.在这种情况下, ...

  7. NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)

    目的: 数据采集 写入本地文件备份 构建web服务器 将文件读取到网页中进行展示 目录结构: package.json文件中的内容与上一篇一样:NodeJs+Request+Cheerio 采集数据 ...

  8. NodeJs+Request+Cheerio 采集数据

    目的:采集网站文章. 两个依赖项: request :https://github.com/request/request cheerio:https://github.com/cheeriojs/c ...

  9. Hawk 3. 网页采集器

    1.基本入门 1. 原理(建议阅读) 网页采集器的功能是获取网页中的数据(废话).通常来说,目标可能是列表(如购物车列表),或是一个页面中的固定字段(如JD某商品的价格和介绍,在页面中只有一个).因此 ...

  10. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

随机推荐

  1. 开源项目audioFlux: 针对音频领域的深度学习工具库

    目录 时频变换 频谱重排 倒谱系数 解卷积 谱特征 音乐信息检索 audioFlux是一个Python和C实现的库,提供音频领域系统.全面.多维度的特征提取与组合,结合各种深度学习网络模型,进行音频领 ...

  2. Arrays.asList() 示例

    1 package Test.others; 2 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.ut ...

  3. 【深度思考】聊聊CGLIB动态代理原理

    1. 简介 CGLIB的全称是:Code Generation Library. CGLIB是一个强大的.高性能.高质量的代码生成类库,它可以在运行期扩展Java类与实现Java接口, 底层使用的是字 ...

  4. 飞行时间技术TOF

    文章目录 飞行时间技术TOF 一. 光速的测定 二. 各种TOF技术 直接脉冲TOF 脉冲间接TOF 连续波调制TOF(Continous Wave TOF) 三. TOF技术的应用 飞行时间技术TO ...

  5. C++ Primer 5th 阅读笔记:变量和基本类型

    一些语言的公共特性 内建类型,如整型,字符型等: 变量,为值绑定的一个名字: 表达式和语句,操作值. 分支和循环,允许我们条件执行和重复执行: 函数,定义抽象计算单元. 扩展语言的方式 自定义类型: ...

  6. #PowerBI 1分钟学会,利用format函数,自定义格式显示

    PowerBI是一款强大的数据分析和可视化工具,它可以帮助我们快速地创建各种报表和仪表盘,展示数据的洞察和价值. 在PowerBI中,有许多内置的函数可以帮助我们处理和转换数据,其中一个常用的函数就是 ...

  7. 2023-03-01:用moonfdd/ffmpeg-go库,将h264文件编码为mp4文件。

    2023-03-01:用moonfdd/ffmpeg-go库,将h264文件编码为mp4文件. 答案2023-03-01: 使用 github.com/moonfdd/ffmpeg-go 库.现在我们 ...

  8. 2022-07-12:以下go语言代码输出什么?A:1 1;B:1.0 1.0;C:编译不通过;D:1.0 1。 package main import “fmt“ func main() {

    2022-07-12:以下go语言代码输出什么?A:1 1:B:1.0 1.0:C:编译不通过:D:1.0 1. package main import "fmt" func ma ...

  9. 2021-02-08:给定一个字符串str,请问这个字符串的最长回文子序列长度是多少?

    2021-02-08:给定一个字符串str,请问这个字符串的最长回文子序列长度是多少? 福哥答案2021-02-08: 自然智慧即可.1.原序列和反序列求公共子序列.无代码.2.递归.有代码.3.动态 ...

  10. 2021-09-20:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O

    2021-09-20:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O ...