python-新浪爬虫之模拟登录

好了,现在讲述针对Ajax异步请求内容的爬虫实例,以新浪微博为例。
首先,新浪微博与前面讲述的两个网站不同的是,需登录才能获取内容,否则只能看到几条微博。

正题,模拟登录的几种方式

这里爬取的是新浪微博手机端网站,也就是m站,输入http://m/weibo.cn,
你会看到如下界面,需要登录后才能看到界面

Paste_Image.png

1.利用用户id

首先介绍一种最简单的方式跳过登录界限,针对是爬取特定用户的信息,仅需加上需爬取用户id即可

如: http://m.weibo.cn/u/12337777 12337777为用户id,这里是数字是随意写的,可以加上自己的id,用户id 可自行登录后 ,在开发者工具网络中下图X-Log-Uid中后面的那串数字就是你的id


同理,也可以看见你关注用户的id,进入你关注用户的界面,打开开发者工具,重新载入一次界面,可在XHR中看到返回为json的请求,打开响应,可看到各项参数。

Paste_Image.png

利用cookie

当你登录一个网站后,便会产生对应的cookie,cookie是让浏览器知道你曾经登录过,所以当你访问该站点的其它页面便不用再进行登录操作,另外,并且当你再次访问该网站也无需进行登录。所以在进行爬虫操作时,将cookie加入你的请求的标题头即可。
获取cookie有如下方法,第一种直接在开发者工具中找

Paste_Image.png

第二种方式可利用之前提到的selenium,模拟登录之后获取cookie

    driver.get("https://passport.weibo.cn/signin/login?") 
    time.sleep(5)
    elem_user = driver.find_element_by_id("loginName") 
    elem_user.send_keys(username) #用户名   
    elem_pwd = driver.find_element_by_id("loginPassword")  
    elem_pwd.send_keys(password)  #密码     
    time.sleep(5)            #sleep这个习惯其实不是很好,最好使用之前提过的显式等待
    elem_sub = driver.find_element_by_id("loginAction")  
    elem_sub.click()              #点击登陆  
    time.sleep(2)
    cookies = driver.get_cookies() #获取cookie
    cookie = [item["name"] + "=" + item["value"] for item in cookies]
    cookiestr = ';'.join(item for item in cookie) #处理cookie使其格式与标题头中要求一致

于是,经过处理后的cookie就和上一图片中cookie后面的值一样啦。
获取了cookie之后怎么使用呢?

    user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0'
    headers = { 'User-Agent' : user_agent , 'cookie': cookies}##把得到的cookie加在header里之后随请求一起发送,就可以得到登录后的页面
    index_url = 'http://weibo.cn/ofobike?page=1'
    request = urllib2.Request(url = index_url, headers = headers)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,111评论 25 709
  • HTTP cookie(也称为web cookie,网络cookie,浏览器cookie或者简称cookie)是网...
    留七七阅读 18,349评论 2 71
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,267评论 19 139
  • 上色砸了
    shykawah阅读 2,801评论 0 1
  • 许你孤独,愿你一生不为情而困。 许你伪装,愿你一世不为伤而泪。 许你残忍,愿你一生不为人而伤。 许你懒惰,愿你一世...
    缺叶甫央阅读 1,310评论 0 1

友情链接更多精彩内容