python - 模拟登陆后如何获取跳转的网页?

 迷迷糊糊的Nancy 发布于 2022-10-28 23:55

爬取虾米音乐时,模拟登陆网页版地址https://login.xiami.com/member/login后,返回的是一串字符(包括status、jumpurl以及账号信息等),但无法获取跳转后的网页(http://www.xiami.com/);通过HttpFox发现:为了得到网页,必须发送登录时获取的cookie,于是添加cookie再进行爬取就可以了!奇怪的是,登陆手机版的网址不需要发送cookie就可以获取到,所以也想请教下原因。如果不采用登陆后再添加cookie的方法,如何直接获取到登陆跳转后的网页?
附录的代码:

#! /usr/bin/env python2.7
# encoding=utf-8

import re
import urllib,cookielib,urllib2

cookie = cookielib.CookieJar()    
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 

postdata = urllib.urlencode({
    'email' : '(省略)',
    'password' : '(省略)',
    'submit' : '%E7%99%BB%E5%BD%95',
    '_xiamitoken' : '(省略)',
    'done' : 'https://www.xiami.com',
    'from' : 'web',
    'havanaId' : ''
})

postdata = postdata.encode('utf-8')

login_headers = {
    'Referer' : 'https://www.xiami.com/',
    'User-Agent' : 'Chrome/45.0.2454.101',
}

url = 'https://login.xiami.com/member/login'

req = urllib2.Request(url,postdata)
#result = opener.open(req)
result = urllib2.urlopen(req)

print result.read()

获取到的字符串:
{"status":true,"message":"success","data":{"user_id":"(省略)","nick_name":"(省略)"},"jumpurl":"https:\/\/www.xiami.com"}

5 个回答
  • 根据你的描述登录接口返回数据,那基本就是前台完成的控制跳转,所以你只能用你的爬虫程序自行完成cookie携带请求

    2022-11-12 01:44 回答
  • cookie = cookielib.CookieJar()    
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 

    爬取的时候,就在开始加上这两句话 就可以带cookie访问了啊 别的你就不用管了, 有些请求是必须发送某些cookie的吧,而且感觉跳转不用管吧,就算跳转了,cookie也会在本地存着呢。你要爬取的东西都可以通过分析请求来得到吧。 不知道你的问题与我的回答有没有在一条路上。。。

    2022-11-12 01:44 回答
  • requests能自动跳转

    2022-11-12 01:44 回答
  • 好像urllib2的302跳转会不带Cookies。
    请看http://www.hawkwithwind.net/blog/2013/08...

    2022-11-12 01:44 回答
    1. 模拟操作的时候,个人推荐使用requests库,可以自动提交cookie,免去手动操作的烦恼

    2. 手机可以不用cookie直接获取内容,感觉关键在于ua,有条件可以抓包看一下

    2022-11-12 01:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有