码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-05 23:11:29      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:tar   als   logs   path   www   lan   safari   信息   默认   

涉及关键词: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())
View Code

测试结果

技术分享

大功告成!

五、总结分析

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

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

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

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



 

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

标签:tar   als   logs   path   www   lan   safari   信息   默认   

原文地址:http://www.cnblogs.com/Undo-self-blog/p/7482270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!