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

涉及关键词:requests库 requests.post方法 cookies登陆

一、目的分析

利用cookie登陆豆瓣,并写一篇日记 
https://www.douban.com/note/636142594/

二、步骤分析

1、使用浏览器登陆豆瓣,得到并分析cookie

2、使用cookie模拟登陆豆瓣(使用账号密码登陆也可以,需要验证码,cookie的时效一般就几天)

3、分析浏览器写日记行为,在python中模拟post行为

4、源码及测试

三、scrapy shell 模拟登陆

1、使用浏览器登陆豆瓣,在fidder中获得cookie

cookie中有许多项(并不是全部需要),经过一条条测试,发现只要包含‘dbcl2‘就能登录

2、打开scrapy shell 测试登陆

  模拟浏览器User-Agent和cookies

$ scrapy shell
...
from scrapy import Request
cookies = {‘dbcl2‘:‘"164753551:kjyoTNgwwII"‘}
headers={‘User-Agent‘:‘Mozilla/5.0‘}
req = Request(‘https://www.douban.com/mine/‘, headers=headers,cookies = cookies)
fetch(req)
#使用浏览器检查元素得到xpath(方法参考爬虫(一)(二))(日记内容权限未自己可见,若可看见日记内容便模拟登陆成功)
>>> response.xpath(‘//*[@id="note_636142594_short"]‘).extract()
[‘<div class="note" id="note_636142594_short">Hello Douban</div>‘]
>>> response.xpath(‘//*[@id="note_636142594_short"]/text()‘).extract()
[‘Hello Douban‘]
>>>

得到日记内容,可见模拟登陆成功,cookie可用

四、python 写豆瓣日记

1、使用浏览器写日记,并在fidder中观察行为

发现浏览器进行了POST https://www.douban.com/note/create HTTP/1.1的行为

post 的内容是ck=BsJH&note_id=636142544&note_title=test_2&note_text=hello2&author_tags=&note_privacy=P

ck=BsJH  是cookie中的一个值

note_id=636142544(估计是用户id,直接照抄)

note_id=636142544&note_title=test_2&note_text=hello2(标题,以及内容)

另外三个参数不重要,使用默认就行

2、使用python模拟post行为

#post 所需要的参数

requests.post(url = url,data = data,headers=headers,verify=False,cookies = cookies)

五、源码及测试

源码

 1 import requests
 2 ### 1、首先登陆任何页面,获取cookie
 3
 4 #使用requests打开https时会产生warming,加上这句屏蔽
 5 requests.packages.urllib3.disable_warnings()
 6
 7 headers = dict()
 8 headers[‘User-Agent‘] = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3387.400 QQBrowser/9.6.11984.400‘
 9
10 cookies = dict()
11 cookies = {#‘ll‘:‘"118201"‘,
12             #‘bid‘:‘PUWFXi53MHA‘,
13             #‘_ga‘:‘GA1.2.1759080547.1501749204‘,
14             #‘__yadk_uid‘:‘rjmLGzYjJuHI5lHNHJX3lOgBAltgb5Xy‘,
15             #‘gr_user_id‘:‘16c2c492-9e32-4af2-9c35-230e8d43db06‘,
16             #‘ps‘:‘y‘,
17             #‘_pk_ref.100001.8cb4‘:‘%5B%22%22%2C%22%22%2C1504529257%2C%22https%3A%2F%2Faccounts.douban.com%2Flogin%3Fredir%3Dhttps%253A%252F%252Fwww.baidu.com%252Flink%253Furl%253DEh3nGSbWZ6S0P2OQc7QHrEzCkdwJewBLjFnBpRTRwKv4QwoLScCwKCSh9iQFeDAx%2526wd%253D%2526eqid%253D8191d1c1000627560000000359ad43f4%22%5D‘,
18             #‘ap‘:‘1‘,
19             #‘_vwo_uuid_v2‘:‘57D26B154CE7E363177CFD5F35F06F34|e63fa1bfe4c07598b6454ae2a97166cb‘,
20             ‘dbcl2‘:‘"164753551:kjyoTNgwwII"‘
21             #‘ck‘:‘osar‘,
22             #‘_pk_id.100001.8cb4‘:‘70e88acbc88cb16d.1501749196.11.1504530290.1504527380.‘,
23             #‘_pk_ses.100001.8cb4‘:‘*‘,
24             #‘push_noty_num‘:‘0‘,
25             #‘push_doumail_num‘:‘0‘,
26             #‘__utma‘:‘30149280.1759080547.1501749204.1504529257.1504530054.20‘,
27             #‘__utmb‘:‘30149280.5.10.1504530054‘,
28             #‘__utmc‘:‘30149280‘,
29             #‘__utmz‘:‘30149280.1504530054.20.16.utmcsr‘,
30             #‘__utmv‘:‘30149280.16475‘
31             }
32
33 data = {‘ck‘:‘BsJH‘,
34         ‘note_id‘:‘636142544‘,
35         ‘note_title‘:‘HelloPython‘,
36         ‘note_text‘:‘HelloPython‘
37         #‘author_tags‘:‘‘,
38         #‘note_privacy‘:‘P‘
39     }
40 url = ‘https://www.douban.com/note/create‘
41 #注意访问https链接时要加上verify=False参数,否则回报错
42 ret = requests.post(url = url,
43                     data = data,
44                     headers=headers,
45                     verify=False,
46                     cookies = cookies
47                     )
48 print(ret.text[:300])
49 print(ret.cookies.get_dict())

测试结果

大功告成!

五、总结分析

1、这次使用cookie登陆免去了验证码麻烦,下次希望能研究验证码的破解

2、cookie的使用时间有限,隔一段时间就要更换

3、requests对https的限制挺严格的,需要加入verify=False,并且要屏蔽警告信息

  #使用requests打开https时会产生warming,加上这句屏蔽
  requests.packages.urllib3.disable_warnings()



时间: 2024-11-10 11:50:30

Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记的相关文章

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

Python爬虫学习:四、headers和data的获取

之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.com/ 打开网页,按下F12键,如下图所示: 点击下方标签中的Network,如下: 之后再点击下图所示位置: 找到红色下划线位置所示的标签并点击,在右边的显示内容中可以查看到所需要的headers信息. 一般只需要添加User-Agent这一信息就足够了,headers同样也是字典类型: user

Python学习系列(四)Python 入门语法规则2

Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, utf8解码成Unicode,再将unicode编码成gbk 对于py3.5 如果utf8>gbk, utf8 直接编码成gbk(中间那一步直接被优化了) 3.很多时候,这个可以直接跳过,只有当编码出下问题的时候,再考虑这个知识点 二.运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算

python 爬虫实例(四)

环境: OS:Window10 python:3.7 爬取链家地产上面的数据,两个画面上的数据的爬取 效果,下面的两个网页中的数据取出来 代码 import datetime import threading import requests from bs4 import BeautifulSoup class LianjiaHouseInfo: ''' 初期化变量的值 ''' def __init__(self): # 定义自己要爬取的URL self.url = "https://dl.li

[python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对比,你可以进一步加深Python爬虫的印象.同时,文章给出了我以前关于爬虫的基础知识介绍,方便新手进行学习.        总之,希望文章对你有所帮助,如果存在不错或者错误的地方,还请海涵~ 一. DOM树结构分析 豆瓣Top250电影网址:https://movie.douban.com/top2

Python爬虫开发的3大难题,别上了贼船才发现,水有多深

写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上了贼船才发现,水好深-比如爬取一个网页可以是很简单的一行代码: r = requests.get('http://news.baidu.com') 非常的简单,但它的作用也仅仅是爬取一个网页,而一个有用的爬虫远远不止于爬取一个网页. 一个有用的爬虫,只需两个词来衡量: 数量:能否抓全所有该类数据 效率:抓完所

python爬虫入门(四)利用多线程爬虫

多线程爬虫 先回顾前面学过的一些知识 1.一个cpu一次只能执行一个任务,多个cpu同时可以执行多个任务2.一个cpu一次只能执行一个进程,其它进程处于非运行状态3.进程里包含的执行单元叫线程,一个进程可以包含多个线程4.一个进程的内存空间是共享的,每个进程里的线程都可以使用这个共享空间5.一个线程在使用这个共享空间的时候,其它的线程必须等待(阻塞状态)6.互斥锁作用就是防止多个线程同时使用这块内存空间,先使用的线程会将空间上锁,其它的线程处于等待状态.等锁开了才能进7.进程:表示程序的一次执行

Python爬虫学习记录【内附代码、详细步骤】

引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先参考学习.传送门:请点击 本篇文章是自己同步跟着视频学习的记录,欢迎阅读~~~ 实验:新浪新闻首页爬虫实践 http://news.sina.com.cn/china/ 一.准备 浏览器内建的开发人员工具(以Chrome为例) Python3 requests 库 Python3 BeautifulSoup4

Python 爬虫入门(四)—— 验证码上篇(主要讲述验证码验证流程,不含破解验证码)

本篇主要讲述验证码的验证流程,包括如何验证码的实现.如何获取验证码.识别验证码(这篇是人来识别,机器识别放在下篇).发送验证码.同样以一个例子来说明.目标网址 http://icp.alexa.cn/index.php(查询域名备案信息) 1.验证码的实现: 简单的说,验证码就是一张图片,图片上有字符串.网站是如何实现的呢?有WEB基础的人可能会知道,每个浏览器基本都有cookie,作为这次回话的唯一标示.每次访问网站,浏览器都会把这个cookie发送给服务器.验证码就是和这个cookie绑定到