鱼C论坛

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

[已解决]爬虫

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

# 豆瓣的登录页
loginurl = 'https://accounts.douban.com/j/mobile/login/qrlogin_code'
# 豆瓣首页
url = 'https://www.douban.com/'
# 定制opener,传递cookie
cookie = CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
# 设置headers,模拟浏览器
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'}
# 表单提交参数设置
data = {
'ck':'',
'name':'这里填邮箱~QAQ',
'password':'这里填密码~QAQ',
'remember':'false',
'ticket':''
}
# get请求的request
req_get = urllib.request.Request(url,headers=headers)
# post请求的request
req_post = urllib.request.Request(loginurl,urllib.parse.urlencode(data).\
                             encode('utf-8'),headers)
# get请求的response
res_get = opener.open(req_get)
# post请求的response
res_post = opener.open(req_post)

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

# json解码
res_js = json.loads(res_html)
# 根据status的值判断是否登录成功
if res_js['status'] == 'success':
    print('登录成功')
else:
    print('登录失败')
# get请求的request
req_get = urllib.request.Request(url,headers=headers)
# post请求的request
req_post = urllib.request.Request(loginurl,urllib.parse.urlencode(data).\
                             encode('utf-8'),headers)
# get请求的response
res_get = opener.open(req_get)
# post请求的response
res_post = opener.open(req_post)

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

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

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

最佳答案

查看完整内容

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

使用道具 举报

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

使用道具 举报

发表于 2021-5-24 21:29:23 | 显示全部楼层
上面有说明啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 21:54:05 | 显示全部楼层
2021年了 咋还有人用urllib  你们看教程不看看教程发布时间吗
IT的更新是日新月异的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

看不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 23:23:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

什么时间GitHub可以打开!!!
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

能访问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 17:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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