如果遇到反爬,可以尝试以下几种方法:
1. 修改请求头:有些网站会根据请求头中的信息来判断是否是爬虫,如果是则会拒绝访问。因此,我们可以修改请求头中的信息,使其看起来更像是浏览器发送的请求。例如,以下代码可以设置User-Agent和Referer两个请求头:
```python
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Referer': 'https://www.google.com/'
}
response = requests.get(url, headers=headers)
```
2. 使用代理IP:有些网站会根据IP地址来判断是否是爬虫,如果是则会拒绝访问。因此,我们可以使用代理IP来隐藏真实的IP地址。例如,以下代码可以使用代理IP来发送请求:
```python
proxies = {
'http': 'http://127.0.0.1:8888',
'https': 'https://127.0.0.1:8888'
}
response = requests.get(url, proxies=proxies)
```
在这个例子中,我们使用了一个本地的代理服务器,它监听在8888端口上。
3. 延时访问:有些网站会根据短时间内的大量请求来判断是否是爬虫,如果是则会拒绝访问。因此,我们可以在发送请求之间加入一些延时,使其看起来更像是人类的行为。例如,以下代码可以在每次请求之间等待1秒钟:
```python
import time
for i in range(10):
response = requests.get(url)
html = response.text
# 解析HTML页面并提取数据
time.sleep(1) # 等待