Python爬虫设置 * 的方法(爬虫技巧)
作者:mrr 时间:2023-08-08 22:05:36
在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,这里讲述一个爬虫技巧,设置 * 。
(一)配置环境
安装requests库
安 * s4库
安装lxml库
(二)代码展示
# IP地址取自国内髙匿 * 网站:http://www.xicidaili.com/nn/
# 仅仅爬取首页IP地址就足够一般使用
from bs4 import BeautifulSoup
import requests
import random
def get_ip_list(url, headers):
web_data = requests.get(url, headers=headers)
soup = BeautifulSoup(web_data.text, 'lxml')
ips = soup.find_all('tr')
ip_list = []
for i in range(1, len(ips)):
ip_info = ips[i]
tds = ip_info.find_all('td')
ip_list.append(tds[1].text + ':' + tds[2].text)
return ip_list
def get_random_ip(ip_list):
proxy_list = []
for ip in ip_list:
proxy_list.append('http://' + ip)
proxy_ip = random.choice(proxy_list)
proxies = {'http': proxy_ip}
return proxies
if __name__ == '__main__':
url = 'http://www.xicidaili.com/nn/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
ip_list = get_ip_list(url, headers=headers)
proxies = get_random_ip(ip_list)
print(proxies)函数get_ip_list(url, headers)传入url和headers,最后返回一个IP列表,列表的元素类似42.84.226.65:8888格式,这个列表包括国内髙匿 * 网站首页所有IP地址和端口。
函数get_random_ip(ip_list)传入第一个函数得到的列表,返回一个随机的proxies,这个proxies可以传入到requests的get方法中,这样就可以做到每次运行都使用不同的IP访问被爬取的网站,有效地避免了真实IP被封的风险。proxies的格式是一个字典:{‘http': ‘http://42.84.226.65:8888‘}
。
(三) * 的使用
运行上面的代码会得到一个随机的proxies,把它直接传入requests的get方法中即可。
web_data = requests.get(url, headers=headers, proxies=proxies)
总结
以上所述是小编给大家介绍的Python爬虫设置 * 的方法(爬虫技巧),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
来源:http://blog.csdn.net/lammonpeter/article/details/52917264
标签:python,爬虫,代理ip


猜你喜欢
解决Mysql 8.0.17 winx64版本安装过程中遇到的问题
2024-01-26 12:35:33
对Python强大的可变参数传递机制详解
2021-06-23 02:54:09
用Python实现数据筛选与匹配实例
2023-01-13 15:31:42

Python实现计算文件夹下.h和.cpp文件的总行数
2022-09-20 00:54:51
HTML 5 V.S. XHTML 2:HTML5倍受青睐,XHTML2处境尴尬
2009-06-08 12:57:00
Flask框架单例模式实现方法详解
2023-01-24 17:04:55
详解 python logging日志模块
2021-05-07 19:59:01

Python 基础教程之包和类的用法
2021-10-31 16:58:19

一文详解golang延时任务的实现
2024-03-23 16:00:16

Python中顺序表原理与实现方法详解
2023-03-24 22:57:48
PHP中的函数嵌套层数限制分析
2023-11-21 08:43:24
一些文件未注册导致mssql表文件无法找开的解决方法
2024-01-26 18:42:22
python神经网络Densenet模型复现详解
2022-02-13 06:43:13

mysql下mysql-udf-http效率测试小记
2024-01-16 15:14:21
Django中的cookie和session
2022-02-21 02:40:42

python使用socket高效传输视频数据帧(连续发送图片)
2021-04-14 23:17:40

python基础之定义类和对象详解
2023-06-15 05:35:12
Python多维/嵌套字典数据无限遍历的实现
2023-07-22 16:48:56
python实点云分割k-means(sklearn)详解
2023-11-06 20:36:03

linux实现mysql数据库每天自动备份定时备份
2024-01-20 11:58:53
