鱼C论坛

 找回密码
 立即注册
查看: 6575|回复: 11

[已解决]爬虫

[复制链接]
发表于 2021-5-24 17:55:46 | 显示全部楼层 |阅读模式
25鱼币
本帖最后由 huangdongdong 于 2021-5-24 17:57 编辑
  1. import urllib.request
  2. from http.cookiejar import CookieJar#http.cookiejar是python2中的cookielib(向服务端验证身份)
  3. import json#

  4. # 豆瓣的登录页
  5. loginurl = 'https://accounts.douban.com/j/mobile/login/qrlogin_code'
  6. # 豆瓣首页
  7. url = 'https://www.douban.com/'
  8. # 定制opener,传递cookie
  9. cookie = CookieJar()
  10. opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
  11. # 设置headers,模拟浏览器
  12. headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
  13. # 表单提交参数设置
  14. data = {
  15. 'ck':'',
  16. 'name':'这里填邮箱~QAQ',
  17. 'password':'这里填密码~QAQ',
  18. 'remember':'false',
  19. 'ticket':''
  20. }
  21. # get请求的request
  22. req_get = urllib.request.Request(url,headers=headers)
  23. # post请求的request
  24. req_post = urllib.request.Request(loginurl,urllib.parse.urlencode(data).\
  25.                              encode('utf-8'),headers)
  26. # get请求的response
  27. res_get = opener.open(req_get)
  28. # post请求的response
  29. res_post = opener.open(req_post)

  30. res_html = res_post.read().decode('utf-8')

  31. # json解码
  32. res_js = json.loads(res_html)
  33. # 根据status的值判断是否登录成功
  34. if res_js['status'] == 'success':
  35.     print('登录成功')
  36. else:
  37.     print('登录失败')
复制代码
  1. # get请求的request
  2. req_get = urllib.request.Request(url,headers=headers)
  3. # post请求的request
  4. req_post = urllib.request.Request(loginurl,urllib.parse.urlencode(data).\
  5.                              encode('utf-8'),headers)
  6. # get请求的response
  7. res_get = opener.open(req_get)
  8. # post请求的response
  9. res_post = opener.open(req_post)

  10. res_html = res_post.read().decode('utf-8')
  11. 这一段代码是什么意思???
复制代码


这一题的解题思路是什么???

最佳答案
2021-5-24 17:55:47
这里应该先发送post请求,提交表单数据,获得服务器返回的cookie(自动保存在cookieJar对象中),然后再发送get请求,实现访问登录后的页面,

最佳答案

查看完整内容

这里应该先发送post请求,提交表单数据,获得服务器返回的cookie(自动保存在cookieJar对象中),然后再发送get请求,实现访问登录后的页面,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 17:55:47 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
这里应该先发送post请求,提交表单数据,获得服务器返回的cookie(自动保存在cookieJar对象中),然后再发送get请求,实现访问登录后的页面,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 21:29:23 | 显示全部楼层
上面有说明啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 21:54:05 | 显示全部楼层
2021年了 咋还有人用urllib  你们看教程不看看教程发布时间吗
IT的更新是日新月异的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-24 23:11:30 | 显示全部楼层

看不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 23:23:47 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-24 23:31:08 | 显示全部楼层
本帖最后由 huangdongdong 于 2021-5-24 23:34 编辑
  1. <blockquote>#登录首页
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-24 23:37:41 | 显示全部楼层
本帖最后由 huangdongdong 于 2021-5-24 23:39 编辑
  1. 登录首页
  2. req_get = urllib.request.Request(url,headers=headers)
  3. res_get = opener.open(req_get)
  4. #登录验证页

  5. req_post = urllib.request.Request(loginurl,urllib.parse.urlencode(data).\
  6. encode('utf-8'),headers)
  7. res_post = opener.open(req_post)
  8. res_html = res_post.read().decode('utf-8')
  9. 这样理解对吗???
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-25 01:52:06 | 显示全部楼层
suchocolate 发表于 2021-5-24 23:23
看书:https://github.com/Python3WebSpider/Python3WebSpider

什么时间GitHub可以打开!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-25 08:52:49 | 显示全部楼层
H原子 发表于 2021-5-25 00:55
这里应该先发送post请求,提交表单数据,获得服务器返回的cookie(自动保存在cookieJar对象中),然后再发 ...

# post请求的response
res_post = opener.open(req_post)
这里为啥是post而不是get
# get请求的request
req_get = urllib.request.Request(url,headers=headers)
这里为啥不是post
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-25 09:44:27 From FishC Mobile | 显示全部楼层
这个代码能访问到登录后的页面?应该不能吧,如果能的话当我没说,不能的话就调整一下顺序试试
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-25 09:46:05 | 显示全部楼层
H原子 发表于 2021-5-25 09:44
这个代码能访问到登录后的页面?应该不能吧,如果能的话当我没说,不能的话就调整一下顺序试试

能访问
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 13:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表