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 ...
随机推荐
- Windows下python库的常用安装方法
目录: 1.pip安装(需要pip) 2.通过下载whl文件安装(需要pip) 3.在pythn官网下载安装包安装(不需要pip) 方法一:pip安装. 这是最 ...
- python中的insert
insert()往列表的指定位置添加元素,举个例子: 1 a = ["hello", "world", "dlrb"] 2 a.insert ...
- Docker 初学
据我理解, 它最大的用途是 将我们的应用及环境整个打包, 这样如果我们的开发环境环境部署了,就不用再分别去测试/ 生产环境部署了! -- 但是, 新问题在于, 拷贝这些东西比较麻烦... Docker ...
- zabbix模块注意
1,每个监控组使用一个模版,对模版操作时会对监控组的每个模版进行修改操作.
- spring 的 切片Aspect 最常用记录方法执行时间
/** * */ package com.icil.esolution.aspect; import java.util.Date; import org.aspectj.lang.Proceedin ...
- Linux中的Wheel组的作用
原文:http://www.360doc.com/content/11/0505/10/4644186_114496525.shtml Linux中的Wheel组的作用(用自己的话翻译的) (原文) ...
- Django--ORM(模型层)-重点
一.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发 ...
- 开发webapp手机返回键 退出问题 摘录
mui进行手机物理键的监听 确保引入mui 调用以下函数 // android 返回按键处理 androidBack(store, data) { try { mui.init({ keyEventB ...
- js 迭代器 解说
这里要说的是迭代器,是一种思路而已,代码相对来不是最关键的,个人认为,最关键的部分是实现的思路 要求: 在一个网页中,将所有的 p 元素的内容进行替换,但是在特定的位置的 p 元素是要有差异的进行替换 ...
- Delphi XE8 中TIdTCPClient的WriteLn编码变化!
//XE2中正常的代码: IdTCPClient1.IOHandler.WriteLn(sendData,TEncoding.ANSI); //XE8中不行了,解决方法: //,引入“IdGlobal ...