美文网首页数据大数据 爬虫Python AI Sql
python-新浪爬虫之模拟登录

python-新浪爬虫之模拟登录

作者: 周一ing | 来源:发表于2017-10-13 16:07 被阅读0次

好了,现在讲述针对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)

相关文章

  • python-新浪爬虫之模拟登录

    好了,现在讲述针对Ajax异步请求内容的爬虫实例,以新浪微博为例。首先,新浪微博与前面讲述的两个网站不同的是,需登...

  • 定向爬虫 - Python模拟新浪微博登录

    当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。 模拟登录是定向爬虫制作中一个...

  • 模拟登录之果壳网

    模拟登录 模拟登录常用于大型数据爬取,通过模拟登录,获得网站发给用户有效的 cookies,在爬虫爬取数据时,可以...

  • Python定向爬虫,模拟新浪微博登录!

    当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。模拟登录是定向爬虫制作中一个必...

  • Python-模拟登录

    当你服务器爬取一些数据的时候,有时候需要账号登录才能爬取你想要的数据。而浏览器主要通过cookie的方式来检验用户...

  • scrapy笔记(3)-微博模拟登录及抓取微博内容

    参考阅读 基于python的新浪微博模拟登陆Python模拟登录新浪微薄(使用RSA加密方式和Cookies文件新...

  • 爬虫模拟登录

    模拟登录心得:完全模拟浏览器的行为,得到链接,发送请求。 遇到的问题 1.get请求的链接可能与post请求的链接...

  • Python-豆瓣爬虫登录

    如何使用requests登录豆瓣并且爬取内容Note:1.如果登录之后要去其他页面查看相关内容得记录session...

  • 猴子都能学会的20行代码登录微博

    猴子都能学会的20行代码登录微博 如何登录新浪微博是令许多数据新手(包括我)头疼的大问题。由于新浪的反爬虫策略,网...

  • scrapy 模拟登录weibo.com

    之前学习了模拟登录新浪微博,没有用到框架,今天晚上尝试用scrapy重新写一遍模拟登录。存在问题:1、scrapy...

网友评论

    本文标题:python-新浪爬虫之模拟登录

    本文链接:https://www.haomeiwen.com/subject/aneotxtx.html