最近迷上了看了四个春天,迷上了饭叔的豆瓣日记,想全部抓取下来,简单了写了下面的脚本

import urllib.request
import os from bs4 import BeautifulSoup def get_html(url):
"""通用方法,获取整个链接得html·"""
web = urllib.request.urlopen(url)
soup = BeautifulSoup(web, "html.parser")
# print(soup)
data = soup.find("div", id="content")
return data def get_diary(data,path):
"""获取日记链接,并且存储起来"""
data = data.find_all("div",class_="note-header-container")
for link in data:
# print(link)
diary_url = link.find('div', class_="rr").find('a').get("href")
with open(path, 'a+', encoding='UTF-8') as f:
f.write(diary_url+'\n') def get_num(url):
#获取最大页数
html_data = get_html(url)
paginator_data = html_data.find("div",class_="paginator")
page_num =[]
for link in paginator_data.find_all("a"):
page_num.append(link.get_text()) return "".join(page_num[-2:-1]) def get_diary_data(url,path):
"""获取日记内容,保存为txt文件"""
data = get_html(url)
title = data.find("h1").get_text()
file_name = path+"/"+title+".txt"
with open(file_name,'a+',encoding='UTF-8') as f:
f.write(title)
note_data = data.find("div",id="link-report")
for node_line in note_data.stripped_strings:
with open(file_name, 'a+', encoding='UTF-8') as f:
f.write(repr(node_line)) if __name__ == '__main__':
url = 'https://www.douban.com/people/luqy/notes'
path = "d://陆导"
diary_url_path = path + "/"+"diary_url.txt"
page_num = get_num(url)
for i in range(14):
url1 = url + "?start=%d&type=note"%(i*10)
get_diary(get_html(url1),diary_url_path) f = open(diary_url_path,'r',encoding='utf-8')
for line in f.readlines():
try:
get_diary_data(line,path)
except Exception as e:
print(e)
f.close()

目前存在一个问题

1,抓取次数过多会被分IP地址

爬取结果:





python获取豆瓣日记的更多相关文章

  1. 爬虫实战【11】Python获取豆瓣热门电影信息

    之前我们从猫眼获取过电影信息,而且利用分析ajax技术,获取过今日头条的街拍图片. 今天我们在豆瓣上获取一些热门电影的信息. 页面分析 首先,我们先来看一下豆瓣里面选电影的页面,我们默认选择热门电影, ...

  2. Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记

    涉及关键词:requests库 requests.post方法 cookies登陆 version 1.5(附录):使用post方法登陆豆瓣,成功! 缺点:无法获得登陆成功后的cookie,要使用js ...

  3. python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式

    一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...

  4. Python 豆瓣日记爬取

    无聊写了个豆瓣日记的小爬虫,requests+bs4. cookies_src可填可不填,主要是为了爬取仅自己可见的日记. url填写的是日记页面,即https://www.douban.com/pe ...

  5. python监控tomcat日记文件

    最近写了一个用python监控tomcat日记文件的功能 实现的功能: 监控日记文件中实时过来的记录,统计每分钟各个接口调用次数,统计结果插入oracle #!/usr/bin/python # -* ...

  6. HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  7. 使用shell/python获取hostname/fqdn释疑

    一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...

  8. python 获取日期

    转载   原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...

  9. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

随机推荐

  1. 关于select的取值

    这篇博客,主要是记录我我所犯的错误,或者自己的写法不规范导致了错误,大家可以引以引以为鉴. 我要获取select当前的值,在IE9上我可以直接写document.getElementById(&quo ...

  2. c++ 实现https网页上的图片爬取

    一.主要的原理 我们通过发送一个http请求,获得目标网页的html源代码,然后通过正则表达式获取到图片的URL,把该网页的所有的图片都保存到一个文件夹,这就是整个软件的流程. 二.具体的实践 现在很 ...

  3. 小程序UI设计(1)-布局

    工欲善其事必先利其器.下面为大家介绍一款工具软件,如何做到轻松布局. 工具简介:小程序layout设计工具,可视化方式进行小程序UI设计.通过鼠标拖拽组件方式进行UI布局.工具提供符合微信视觉统一的模 ...

  4. js 动态获取高度 设置距离

    var boxs = document.getElementById('m2-head');var Height = boxs.clientHeight||o.offsetHeight;console ...

  5. javasctipt之DOM知识点

    一:DOM节点 子节点:childNodes 父节点:parentNode offsetPrent 二:元素属性操作 方式一:xxx.style.xxx 方式二:xxx.style["xxx ...

  6. mysql创建函数槽点

    上机环境 mysql8.0 navicat for mysql 很有那么一批软件程序,要不做点脱了裤子放屁的事儿就觉得自己不够二进制似的,今儿写了一下午mysql函数,怎么都通过不了,上网一看 mys ...

  7. AOP 实现日志

    package com.foen.foensys.config; import com.alibaba.fastjson.JSON;import com.foen.foensys.model.SysL ...

  8. C# socket异步 服务端

    转自:  http://blog.csdn.net/qq_20282263/article/details/54310737 private Dictionary<string, Session ...

  9. Python3 获取一大段文本之间两个关键字之间的内容

    用re或者string.find.以下是re代码 123456789101112131415import re#文本所在TXT文件file = '123.txt' #关键字1,2(修改引号间的内容)w ...

  10. MariaDB 默认是禁止远程访问的 我们改掉它

    查询用户账号信息: select User, host from mysql.user; 现在只显示  root账户中的host项是localhost表示该账号只能进行本地登录,我们需要修改权限,输入 ...