python爬虫5:requests库-案例3

python爬虫5:requests库-案例3

前言

​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

申明

​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好影响。

目录结构

1. 目标

​ 本次案例的主要目标是帮助大家熟悉requests库中的会话维持技巧、代理构建等技巧。

再次说明,案例本身并不重要,重要的是如何去使用和分析,另外为了避免侵权之类的问题,我不会放涉及到网站的图片,希望能理解

2. 详细流程

2.1 代理池的构建

​ 代理池的作用之前已经讲过了,但是如何构建代理池呢?一般来说都是将那些可以使用的代理IP放入数据库中,后面写爬虫程序的时候再调用,因为代理池是可以一直使用的工具。

​ 我之前写过一个脚本,就是利用一个爬虫专门去爬免费代理网站的代理IP,然后再写个爬虫去爬取目标网站。不过这里,我们就简单来,把一些可用的代理IP放入一个字典中即可

2.2 目标确定

​ 这次我换了一个小网站,具体地址我就不放了。

​ 首先,利用上一篇的知识,虚假登录获取data参数值,结果如下:

在这里插入图片描述

​ 可以发现的是,参数构建如下:

data = {
    
    
	'action' : 'user_login',
	'username' : 账号,
	'password' : 密码,
	'rememberme' : 1
}

2.3 真实url确定

​ 在上一讲由于没能实际运行代码,所以忘记讲述这一点了。

就是我们登录页面的url有时候并不是我们在网页上看到的url,比如这个案例中,我在网页上看到的登录网址为:

xxxxxx_login.html

​ 但是,实际上,我通过上面的POST页面,发现真实的网址其实是一个名为xxxxx.php页面,所以大家一定要以抓取的POST页面信息为准,才可以快准狠地登录成功。

2.4 代码

​ 有了上面的思路,代码就很简单了:

import requests
import time
# 网址
login_url = '真实登录网址'
home_url = '个人用户页面网址'
# 参数
username = input('请输入账号:')
password = input('请输入密码:')
data = {
    
    
    'action': 'user_login',
    'username': username,
    'password': password,
    'rememberme': '1'
}
# header参数
headers = {
    
    
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
# 代理池
proxies = {
    
    
    'http' :'http://ip:端口',
    xxxxx
}
# 请求
session = requests.session()
# 登录
session.post(login_url,headers=headers,data=data,proxies=proxies)
time.sleep(6)
# 访问个人主页
response = session.get(home_url,headers=headers)
# 查看结果
print(response.status_code)
# 把个人用户界面网页拷贝下来证明登录成功
with open('home.html','w',encoding='utf-8') as f:
    f.write(response.content.decode('utf-8'))

​ 这里又补充一个知识点,就是你可以把网页源码保存到本地,以html后缀格式存储,然后可以用浏览器打开,这样可以直观看到爬取的结果

​ 此时,我这里的结果如下:

在这里插入图片描述

3. 总结

​ 到这篇文章为止,requests库就讲解完毕了,这里我简单总结一下写请求代码时最需要注意的点:

  • headers参数不能忘记,现在网站最基本的都会排查headers参数
  • 写登录爬虫时,一定要去通过浏览器提供的后台工具,结合我上篇和这篇的知识点,去抓取真实提交的POST页面,找到参数和真实url

​ 下一篇,开始讲解解析库的内容。

猜你喜欢

转载自blog.csdn.net/weixin_46676835/article/details/132247329