python的下载及环境配置

本篇文章给大家谈谈下载python需要设置环境变量吗,以及python详细安装教程环境配置,希望对各位有所帮助,不要忘了收藏本站喔。

为什么要模拟登陆

Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面用Python画简单笑脸代码

保存用户信息

模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息

一、Session的用法

# 导入requests模块
import requests 
# 通过requests的Session来请求网页
s = requests.Session()  
r = s.post(url, headers=headers)

二、Cookie的用法

import urllib.request, http.cookiejar
# 初始化Cookie
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
# 把opener配置为全局 当然也可以不配置全局通过opener来请求网页
urllib.request.install_opener(opener)

模拟登陆实践

我们以豆瓣网为例模拟用户登陆,然后爬取登陆后的用户界面

(1)找到请求表单

登陆一般是通过Post请求来实现的,其传递参数为一个表单,如果要成功登陆,我们需要查看该表单传递了哪些内容,然后构造表单做Post请求。怎么获取表单了,我们只需要打开浏览器右键查看,然后输入账号密码,点击登陆查看其NetWork中的请求,找到表单信息即可(推荐使用谷歌浏览器),该信息中还能找到请求的url。

表单信息

URL

(2)构建表单

表单的key值我们可以通过右键页面检查页面源代码,在页面源码中获得静态的值(还有些动态信息需要手动获取)

formdata = {
    'redir': '',
    'form_email': '账号',
    'form_password': '密码',
    'login': u'登陆'
}

(3)伪装成浏览器进行登录

我们只需要给请求添加上Headers即可

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/55.0.2883.87 Safari/537.36'}

(4)获取验证码

第二步的表单其实还不完整,还差两条跟验证码有关的信息,这两条信息是动态变化的,所以我们要手动获取

r = s.post(url_login, headers=headers)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
captcha = ('img', id='captcha_image')#当登陆需要验证码的时候
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
    captcha_id = re.findall(re_captcha_id, content)
    print(captcha_id)
    print(captcha_url)  # 打印验证码url
    captcha_text = input('Please input the captcha:')  # 手动输入验证码
    formdata['captcha-solution'] = captcha_text # 添加表单信息
    formdata['captcha-id'] = captcha_id

(5)登录

r = s.post(url_login, data=formdata, headers=headers) # 将表单信息传入参数中请求页面即可登录
完整代码
# -*- coding: utf-8 -*-
import requests
import re
from bs4 import BeautifulSoup

s = requests.Session()
url_login = ''

formdata = {
    'redir': '',
    'form_email': '账号',
    'form_password': '密码',
    'login': u'登陆'
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/55.0.2883.87 Safari/537.36'}

r = s.post(url_login, data=formdata, headers=headers)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
captcha = ('img', id='captcha_image')#当登陆需要验证码的时候
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
    captcha_id = re.findall(re_captcha_id, content)
    print(captcha_id)
    print(captcha_url)
    captcha_text = input('Please input the captcha:')
    formdata['captcha-solution'] = captcha_text
    formdata['captcha-id'] = captcha_id
    r = s.post(url_login, data=formdata, headers=headers)
with open('', 'w+', encoding='utf-8') as f:
    f.write(r.text)
运行结果

登陆成功

总结

说了这么多,旨在告诉大家Python这个类目无论是功能性、还是上手程度都碾压其他语言,作为最适合零基础入门的编程语言,想要学习自然不能纸上谈兵,还得沉下心来深入的研究和学习。

只告诉大家学什么但是不给予方向的行为无异于耍流氓,这里也是分享我多年收藏的技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:上述这份完整版的Python小狗小狗已经上传CSDN官方,如果需要可以小狗下方CSDN官方认证二维码 即可小狗

👉[[CSDN大礼包:《python安装包&小狗小狗》小狗分享]](小狗,小狗


原文地址1:https://blog.csdn.net/libaiup/article/details/134713438
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值