07常见反爬

反爬

1)登录反爬
2)代理ip
3)浏览器伪装
1.爬虫流程

第一步:确定目标 (到底需要爬什么数据)

第二步:找网页(看哪些网站可以提供我们需要的数据)

第三步:爬网页数据(爬虫)

1.获取网页数据

方法1(优先):看这个网页有没有我需要的数据对应的接口(如果有数据接口,直接用requests对数据接口发送请求)

方法2(其次):直接用requests对网页地址发送请求,获取网页源代码。(如果user-agent和cookie都添加了还是无法获取数据,进入下一步)

方法3(最后):使用selenium创建浏览器打开网页获取网页源代码

最后:放弃,更换网站

2.解析数据

方法1: json(json数据接口)

方法2:正则、bs4(网页源代码

3.保存数据

csv文件、数据库

代理ip

极光http代理

设置白名单,共享外网ip

1.request使用代理ip
import requests

headers = {
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
    }

# 创建代理ip对应的字典
proxy = {
    'http': '221.229.53.156:4725',
    'https': '221.229.53.156:4725'
}
response = requests.get('https://movie.douban.com/top250', headers=headers, proxies=proxy)

print(response.text)
2. selenium使用代理ip
from selenium.webdriver import Chrome, ChromeOptions

options = ChromeOptions()
# 添加代理ip对应的参数
options.add_argument('--proxy-server=http://221.229.53.156:4725')

b = Chrome()
b.get('https://movie.douban.com/top250')

print(b.page_source)

input()

浏览器自动登录

1. requests自动登录
import requests

# 1.requests自动登录方式: 发送请求的时候,在请求头中添加浏览器中这个网站登陆成功后的cookie信息
# 1)如何获取cookie
headers = {
    'cookie': '_zap=12126d32-6a78-4f46-853d-cadc69c861bd; d_c0=AFDS8UhkgxePTgkS66iRzMDFnUEWZE__dJk=|1696734541; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1697280715; captcha_session_v2=2|1:0|10:1697426264|18:captcha_session_v2|88:ZmdzMjd0YUJwWERZdkp2VEgzVnFCUEkvZUxnZUl3M3c3ZE9aRk94N0w4ZEs3WlNHMDlkdS90ZzVEWXB0RVk1ZA==|515ef513fa0f43eedbcaf3d81c9d478bdbc88f5e7d3cdaebc1a00d2fd2b4fafb; q_c1=a0a8111b84e6474cadcc2404bdf2cfde|1697426313000|1697426313000; z_c0=2|1:0|10:1697456182|4:z_c0|92:Mi4xS1pXUElBQUFBQUFBVU5MeFNHU0RGeGNBQUFCZ0FsVk5pUGtaWmdBNUxnWGp5OHcxckplYmJqSlJoSTZPVkVCMGRR|90ccf49e648bcd020c0464ff74fbcc32e906836e86b59fd38ec1692838dd5620; _xsrf=5e3c4d6a-4a4e-4596-912a-5f8bff647d36; tst=r; SESSIONID=IQq2fkEqeitlrHeH7qvh1n6dtIiftWjSYdAjIr4cH7R; JOID=V1AVCkmrPK-RU6kUIabW-JgawZ0z72XXqDLPWVnJWNP0KuZ8YQkRn_hZrBUjU8ww1dgamgifpxqdf94emxomwUY=; osd=UFgXBU2sNK2eV64cI6nS_5AYzpk052fYrDXHW1bNX9v2JeJ7aQsem_9RrhonVMQy2twdkgqQox2VfdEanBIkzkI=; KLBRSID=fe0fceb358d671fa6cc33898c8c48b48|1697787060|1697787043',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
response = requests.get('https://www.zhihu.com/', headers=headers)

print(response.text)
2.1 selenium获取cookie
from selenium.webdriver import Chrome

# 1.用浏览器打开需要自动登陆的网站
b = Chrome()
b.get('https://www.zhihu.com/')

# 2.留足够长的时间让人工完成登录(浏览器对象指向的窗口中可以看到登陆成功后的信息)
input('是否已经完成登录:')

# 3.获取cookie并且保存到本地文件中,保存完就能用很长时间,除非cookie过期
cookies = b.get_cookies()
with open('files/知乎cookie.txt', 'w', encoding='utf-8') as f:
    f.write(str(cookies))
2.2 selenium自动登录
from selenium.webdriver import Chrome

# 1.打开需要自动登录的网页
b = Chrome()
b.get('https://www.zhihu.com/')

# 2.添加cookie
# 1)获取cookie
with open('files/知乎cookie.txt', encoding='utf-8') as f:
    cookies = eval(f.read())
# 2)将cookie添加到浏览器
for x in cookies:
    b.add_cookie(x)

# 3.重新打开网页
b.get('https://www.zhihu.com/')

input()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值