Python 豆瓣日记爬取
无聊写了个豆瓣日记的小爬虫,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 豆瓣日记爬取的更多相关文章
- Python 豆瓣mv爬取
爬取网址:https://www.dbmeinv.com/ 豆瓣mv(现已更名) 注:自制力不好的同学,先去准备营养快线! import requests from bs4 import ...
- python豆瓣250爬取
import requests from bs4 import BeautifulSoup from lxml import etree # qianxiao996精心制作 #博客地址:https:/ ...
- Python登录豆瓣并爬取影评
上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...
- Python爬虫之爬取慕课网课程评分
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...
- Python爬虫之爬取淘女郎照片示例详解
这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
随机推荐
- SUSE 图形化界面/How to enable/disable AS Java Safe Mode
vncserver 不同的用户使用不同的图形化环境变量 比如sidadm用户要启动configtools.sh 需要sidadm来启动图形化 如何将java切换成safe mode 2125707 - ...
- 关于ioncube扩展的安装和使用
ioncube 是一个专业级的PHP加密解密工具 这里是按照此扩展的教程,安装以后就可以运行用ioncube加密的文件 引导安装说明:一.下载loader-wizard.php ioncube提供了一 ...
- IIS编辑器错误信息:CS0016解决方案
错误信息: 运行asp.net程序时候,编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporar ...
- 序列化 (实现RPC的基础)
public interface ISerializer { <T> byte[] serializer(T obj); <T> T deSerializer(byte[] d ...
- Windows Server 2016正式版教程:安装、激活、设置
https://blog.csdn.net/qq_35306193/article/details/77828990 windows-server-2016介绍.安装.激活.设置等 ...
- tomcat中项目后有括号
引入他人项目时,由于报错,copy本地workspace下其他项目的 .settings和.project到该项目路径下 结果Eclipse 的 Server 中出现了 aaa(bbb)的情况 并且 ...
- Flex学习笔记--多层菜单按钮
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- 01.hadoop集群环境搭建
hadoop集群搭建的步骤 1.安装jdk2修改ip地址3.关闭防火墙4.修改hostname5.设置ssh自动登陆6.安装hadoop-------------------------------- ...
- localStorage本地存储的用法
localStorage用法 if(window.localStorage){ alert('这个浏览器支持本地存储'); }else{ alert('这个浏览器支持不本地存储'); } localS ...
- Swap Nodes in Pairs LeetCode题解
做完这个题目,感觉LeetCode的题目出的真好... 这种题,如果让我在面试时候纸上写代码,肯定会挂的. 我昨天晚上看的题目,昨天脑子是懵的,放下了.今天早上来做. 一开始做,提交,果然错了.写的代 ...