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
0
投稿

猜你喜欢

  • 解决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
  • asp之家 网络编程 m.aspxhome.com