无聊写了个豆瓣日记的小爬虫,requests+bs4。

cookies_src可填可不填,主要是为了爬取仅自己可见的日记。

url填写的是日记页面,即https://www.douban.com/people/***/notes

import requests
import re
from bs4 import BeautifulSoup # cookies
cookies_src='' # 日记页面
url='' def parse_cookies(str):
str_tmp=str.replace(' ','')
str_list=str.split(';')
cookies={}
for item in str_list:
item_list=item.split('=')
key=item_list[0]
value=item_list[1]
cookies[key]=value
return cookies def get_html(url,cookies):
r=requests.get(url,cookies=cookies)
return r.text # 解析日记页面,提取出标题,时间,内容
def parse_diary(src):
soup=BeautifulSoup(web_html,'html.parser')
note_container=soup.find('div','note-container')
title=note_container.find('div','note-header note-header-container').h1.text
time=note_container.find('span','pub-date').text
content=''
contents=note_container.find('div',id='link-report')
text=str(contents).replace('<br>','\n')
text=text.replace('<p>','')
text=text.replace('</p>','\n')
text=text.replace('<div class="note" id="link-report">','')
text=text.replace('</div>','')
content=content+text
return (title,time,content) cookies=parse_cookies(cookies_src) # 提取处所有日记链接
next_page=url
diarys_link=[]
page_num=1
while True:
print("正在获取第%d页的日记链接..."%page_num)
web_html=get_html(next_page,cookies)
soup=BeautifulSoup(web_html,'html.parser')
# 将当前页面的日记链接保存于diarys_link中
for rr in soup.find_all('div','rr'):
diarys_link.append(rr.a['href'])
try: # 到达最后一页
next_page=soup.find('span','next').a['href']
except:
break
page_num=page_num+1 # 解析每条日记
print('逐条解析日记...')
diarys=[]
num=1
for diary in diarys_link:
web_html=get_html(diary,cookies)
diarys.append(parse_diary(web_html))
print('已解析:%d'%num)
num=num+1 # 写入文件
print('写入文件中...')
with open('./diary.txt','w') as f:
for diary in diarys:
f.write(diary[0])
f.write('\n')
f.write(diary[1])
f.write('\n')
f.write(diary[2])
f.write('\n---------------------------------\n') print('写入成功')

关于日记内容的处理部分,本来是可以直接用.text来获取的,但<br><p>标签均被过滤掉,原文中的换行符就没了,所以只能转换成str再进行替换了。

Python 豆瓣日记爬取的更多相关文章

  1. Python 豆瓣mv爬取

    爬取网址:https://www.dbmeinv.com/       豆瓣mv(现已更名) 注:自制力不好的同学,先去准备营养快线! import requests from bs4 import ...

  2. python豆瓣250爬取

    import requests from bs4 import BeautifulSoup from lxml import etree # qianxiao996精心制作 #博客地址:https:/ ...

  3. Python登录豆瓣并爬取影评

    上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...

  4. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  5. Python爬虫之爬取淘女郎照片示例详解

    这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...

  6. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  7. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  8. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  9. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

随机推荐

  1. CopyOnWriteList-JDK1.8

    CopyOnWrite,一个写时复制的技术来保证并发操作的安全,使用这种技术的前提是读大于写. 读读之间相容, 写写之间互斥, 读写操作相容. 实现方法: 在对底层数据进行写的时候,把底层数据复制一份 ...

  2. .Net MVC 身份验证

    .Net身份验证主要是分为三种 Windows | Forms | Passport ,其中Froms在项目中用的最多. Windows 身份验证 Forms 验证 Passport 验证 1.Win ...

  3. excel导入导出的两种方式:csv和XLS

    依赖 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl ...

  4. 【Flex】自定义组件学习

    文件列表 主文件: index.mxml 自定义组件  components.mylogo.mxml 图img  a.jpg 2 mylogo.mxml <s:Group xmlns:fx=&q ...

  5. Linux下部署URL重写

    在将项目部署在Linux服务器后可以通过URL重写隐藏应用的入口文件index.php cd /etc/apache2 vi apache2.conf 修改以下内容 将none改成Alll 重启服务 ...

  6. Python的几种主流框架

    参考:https://www.cnblogs.com/linkenpark/p/5881586.html

  7. openresty(完整版)Lua拦截请求与响应信息日志收集及基于cjson和redis动态路径以及Prometheus监控(转)

    直接上文件 nginx.conf #运行用户和组,缺省为nobody,若改为别的用户和组,则需要先创建用户和组 #user wls81 wls; #开启进程数,一般与CPU核数等同 worker_pr ...

  8. 如何启用windows8, windows10中被停用的远程桌面,如何连接windows10远程桌面?

    针对windows8.x中文版以及win10无远程桌面功能的解决办法: 第一步到一个网站上下载一个工具包. 这个是开源的.可以放心使用.下载地址: https://github.com/binarym ...

  9. [福大2018高级软工教学]团队Alpha阶段成绩汇总

    一.作业地址: https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineerning2018/homework/2396 https://ed ...

  10. [重点]delphi 实现 根据给定的标题去《中国青年报》网上电子报数据中查找匹配的内容,并从该内容中取出引题、正题、副题、作者和正文。

    项目要求:根据给定的标题去<中国青年报>网上电子报数据中查找匹配的内容,并从该内容中取出引题.正题.作者和正文. unit Unit1; interface uses Winapi.Win ...