1.验证码
这里对验证码的处理主要是依靠第三方工具:云打码等,由于第三方工具需要付费,且我的目标网站登录时并不需要验证码,因此我并没有在这个地方花太多时间,先略过。
2.cookie
因为https/http协议的特性是无状态,服务器并不知道你的登录状态,但是用户不可能访问网站内每一个页面都需要登录,因此一些基本的信息如用户的登录信息等需要存储在cookie中。而cookie对象是存储、被携带在session对象中的。
爬虫我们需要在request模块中使用session对象:首先要创建session对象:session=requests.Session(),其次使用session对象进行模拟登录post请求,然后用session对目标页面进行get或post请求。可以理解为,使用session对象登录后,对应的cookie会被存储在session对象,而后的每一次请求都会自动带上对应的cookie
3.代理
使用代理是为了应对“封IP”这样的反爬机制
代理的相关网站:快代理 免费私密代理IP_IP代理_HTTP代理 - 快代理 、西祠代理、www.goubanjia.com,还有从gpt那里问到的Free lists of checked proxy servers online – Proxy-Tools.com(我下面的测试代码就是用了这里面的代理地址来进行模拟测试成功的,其他网站找到的免费站点不是超时就是400)
代理IP的匿名度:
-透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip
-匿名:知道使用了代理,不知道真实的ip
-高匿: 不知道使用了代理,更不知道真实的IP。
import requests
if __name__ == "__main__":
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'
}
url='http://2024.ip138.com/'
response= requests.get(url=url,headers=headers,proxies={"http":'117.160.250.163'})
response.encoding = 'utf-8'
page_text=response.text
print(page_text)
感想:爬虫真的还是蛮麻烦的,首先对目标信息的有效定位就够麻烦了,还要为了应付各种反爬机制去集成各种第三方工具(验证码必不可少,有人说可以学神经网络OCR自己识别),也要集成一些换IP的工具,封IP也是常见操作了,代理IP的高效与否绝对影响着爬虫功能的效率。