采用cookie模拟登录csdn网站

有些网站需要填写账户和密码,如果直接爬去网页信息,自然是进不去了,这里采用cookiejar工具来实现这个目的

import urllib.request, urllib.parse, urllib.error
import http.cookiejar
import ppretty
from bs4 import  BeautifulSoup

if __name__ == '__main__':
    LOGIN_URL = 'https://passport.csdn.net/account/login'
    values = {'user': '**********', 'password': '**********'}
    postdata = urllib.parse.urlencode(values).encode()
    user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
    headers = {'User-Agent': user_agent, 'Connection': 'keep-alive'}
#cookiejar可以理解为存储cookie的一个工具吧,在这里我们把第一次http请求返回的cookie存储在cookie.txt文件中
    cookie_filename = 'cookie.txt'
    cookie = http.cookiejar.MozillaCookieJar(cookie_filename)
    handler = urllib.request.HTTPCookieProcessor(cookie)
    opener = urllib.request.build_opener(handler)

    request = urllib.request.Request(LOGIN_URL, postdata, headers)
    try:
        response = opener.open(request)
        page = response.read().decode()
        # print(page)
    except urllib.error.URLError as e:
        print(e.code, ':', e.reason)

    cookie.save(ignore_discard=True, ignore_expires=True)  # 保存cookie到cookie.txt中
    print(cookie)
    for item in cookie:
        print('Name = ' + item.name)
        print('Value = ' + item.value)

    get_url = 'https://i.csdn.net/#/uc/profile'
    get_request = urllib.request.Request(get_url, headers=headers)
#采用之前的第一次请求返回的cookie作为参数再次进行二次请求,就可以
    get_response = opener.open(get_request)
    soup=BeautifulSoup(get_response,'lxml')
    print(soup.head)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值