爬虫模拟登录复习

知乎模拟登录例子

在模拟登录时,打开开发者工具,在登录时,为了得到确切的请求地址,需要输入错误的密码,因为输入正确时,会跳转,得到多个请求地址,混淆视线。得到地址后,找到需要的提交的参数,有些参数可以在隐藏的输入框中得到,可以通过爬虫提取出来。

import requests
try:
    import cookielib     #内容针对python2
except:
    import http.cookiejar as cookielib   #python3

session = requests.session() 
session.cookies = cookielib.LWPCookieJar(filename='cookies.txt')
agent = '此处省略'
header = {
    'HOST':'www.zhihu.com',
    'Referer':'https://www.zhihu.com',
    'User-Agent':agent
}

def login_in(username, password):
    post_url = '爬取地址'
    post_data = {
    'username':username,
    'password':password,
    #此处为需要提交的内容
    }
    response_text = session.post(post_url, data=post_data, headers=header)
    session.cookies.save()

def is_login():
    inbox_url = '个人中心url'
    response = session.get(inbox_url, headers = header, allow_redirects=False)  # allow_redirects如果返回302,不允许重定向,到另一个页面
    if response.status_code != 200:
        return False
    else:
        return True

现在改用scrapy模拟登录了:

#重写下面函数

class ZhihuLogin:
    def start_requests(self):
        return [scrapy.Request('https://www.zhihu.com/#signin', headers = header, callback=self.login)  #如果没有callback会默认调用parse函数

    def login(self, response):
        post_url = '爬取地址'
        post_data = {
        'username':username,
        'password':password,
        #此处为需要提交的内容
        }
        return [scrapy.FormRequest(
            url = post_url,
            formdata = post_data,
            headers = header,
            callback = is_login   #验证是否登录成功
    )]
    def is_login(self, response):
        text_json = json.loads(response.text)
        for url in self.start_urls:
            yield scrapy.Request(url, dont_filter = True, headers = header)

识别验证码(手动填写):

from PIL import Image   #需要pillow库
try:
    im = Image.open('capt.jpg')   #需要下载到本地,运行到这里自动打开图片
    im.show()
    im.close()
except:
    pass
captcha = raw_input('输入验证码:')

下面介绍一个去掉html tag的库

from w3lib.html import remove_tags
str = "<html>i<span>hello</span></html>"
remove_tags(str)
#            ihello
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值