Rastreé el conjunto de redes hermanas 100G con Python, que vale la pena recopilar

 


El prefacio está
trabajando en instalaciones de soporte para monitoreo recientemente, y descubrió que muchos scripts están basados ​​en Python. Escuché que su nombre es hace mucho tiempo, la vida es corta, aprendo Python, esto no es una broma. Con el auge de la inteligencia artificial, el aprendizaje automático y el aprendizaje profundo, la mayor parte del código de inteligencia artificial actualmente en el mercado se escribe principalmente en Python. Entonces, en la era de la inteligencia artificial, es hora de aprender Python.

Guía de entrada
Para los estudiantes que no tienen ninguna experiencia en el desarrollo del lenguaje, se recomienda comenzar desde el sistema inicial, ya sea un libro, un video o un tutorial de texto.
También tenga en cuenta: ya sea que trabaje en Python o tenga pasatiempos, recuerde: la experiencia en el desarrollo de proyectos es siempre el núcleo. Si carece de nuevos ejercicios de proyecto o no tiene tutoriales de Python, puede ir al intercambio de Python del editor. Puede encontrarlo bajo la conversión de siete o siete y cinco (el homónimo de los números). Hay muchos proyectos de tutoría nuevos en él, ¡y también puede hablar con el viejo conductor para que lo asesore!

Si es un estudiante con otra experiencia en el desarrollo del lenguaje, se recomienda comenzar con un caso, como rastrear un conjunto de imágenes de un sitio web.
Debido a que todo el lenguaje está resuelto, siempre que desee un sentido del lenguaje, la gramática y similares, el código básicamente puede leer ocho o nueve.
Por lo tanto, no se recomienda que los desarrolladores experimentados aprendan desde cero, ya sea un video o un libro, es demasiado derrochador comenzar a aprender un idioma.
Por supuesto, cuando profundizas, aún tienes que estudiar sistemáticamente.
La herramienta de software
Python3
aquí es la última versión del
tutorial de instalación de Python 3.7.1 recomendado:

Dirección de descarga de Win:

Linux Descargar:

PyCharm
herramientas de desarrollo visual:

caso
los pasos de realización
de la figura hermana como un ejemplo, es realmente muy simple, dividido en la siguiente Cuatro pasos:

  • Obtenga el número de páginas en la página de inicio y cree una carpeta correspondiente al número de página
  • Obtenga la dirección de la columna de la página
  • Ingrese la columna y obtenga el número de página de la columna (hay varias imágenes debajo de cada columna, que se muestran en las páginas)
  • Obtenga y descargue las imágenes en las pestañas debajo de la columna

Nota Durante el
proceso de rastreo, debe prestar atención a los siguientes puntos, que pueden ser útiles para usted:
1) La biblioteca de guías es en realidad similar al marco o clase de herramienta en Java, y la capa inferior está empaquetada para
instalar la biblioteca de terceros.

  1. # Win下直接装的 python3
  2. pip install bs4、pip install requests
  3. # Linux python2 python3 共存
  4. pip3 install bs4、pip3 install requests


Importar bibliotecas de terceros

  1. # 导入requests库
  2. import requests
  3. # 导入文件操作库
  4. import os
  5. # bs4全名BeautifulSoup,是编写python爬虫常用库之一,主要用来解析html标签。
  6. import bs4
  7. from bs4 importBeautifulSoup
  8. # 基础类库
  9. import sys
  10. # Python 3.x 解决中文编码问题
  11. import importlib
  12. importlib.reload(sys)


2) Defina la función del método, un rastreador puede tener cientos de líneas, así que trate de no escribir un descuidado

  1. def download(page_no, file_path):
  2. # 这里写代码逻辑


3) Definir variables globales

  1. # 给请求指定一个请求头来模拟chrome浏览器
  2. global headers # 告诉编译器这是全局变量 headers
  3. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}
  4. # 函数内使用之前需要
  5. # 告诉编译器我在这个方法中使用的a是刚才定义的全局变量 headers ,而不是方法内部的局部变量。
  6. global headers


4) Cadena antirrobo
Algunos sitios web han agregado una solución python omnipotente de cadena antirrobo.

  1. headers = {'Referer': href}
  2. img = requests.get(url, headers=headers)


5)
El servidor Alibaba Cloud se usa para cambiar la versión del servidor Linux, la versión predeterminada es python2, python3 se instala solo

  1. [root@AY140216131049Z mzitu]# python2 -V
  2. Python2.7.5
  3. [root@AY140216131049Z mzitu]# python3 -V
  4. Python3.7.1
  5. # 默认版本
  6. [root@AY140216131049Z mzitu]# python -V
  7. Python2.7.5
  8. # 临时切换版本 <whereis python>
  9. [root@AY140216131049Z mzitu]# alias python='/usr/local/bin/python3.7'
  10. [root@AY140216131049Z mzitu]# python -V
  11. Python3.7.1


6) Captura anormal
Puede haber páginas anormales durante el proceso de rastreo. Aquí capturamos, sin afectar las operaciones posteriores

  1. try:
  2. # 业务逻辑
  3. exceptExceptionas e:
  4. print(e)



Script de edición de implementación de código : vi mzitu.py

  1. #coding=utf-8
  2. #!/usr/bin/python
  3. # 导入requests库
  4. import requests
  5. # 导入文件操作库
  6. import os
  7. import bs4
  8. from bs4 importBeautifulSoup
  9. import sys
  10. import importlib
  11. importlib.reload(sys)
  12. # 给请求指定一个请求头来模拟chrome浏览器
  13. global headers
  14. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}
  15. # 爬图地址
  16. mziTu = 'http://www.mzitu.com/'
  17. # 定义存储位置
  18. global save_path
  19. save_path = '/mnt/data/mzitu'
  20. # 创建文件夹
  21. def createFile(file_path):
  22. if os.path.exists(file_path) isFalse:
  23. os.makedirs(file_path)
  24. # 切换路径至上面创建的文件夹
  25. os.chdir(file_path)
  26. # 下载文件
  27. def download(page_no, file_path):
  28. global headers
  29. res_sub = requests.get(page_no, headers=headers)
  30. # 解析html
  31. soup_sub = BeautifulSoup(res_sub.text, 'html.parser')
  32. # 获取页面的栏目地址
  33. all_a = soup_sub.find('div',class_='postlist').find_all('a',target='_blank')
  34. count = 0
  35. for a in all_a:
  36. count = count + 1
  37. if (count % 2) == 0:
  38. print("内页第几页:" + str(count))
  39. # 提取href
  40. href = a.attrs['href']
  41. print("套图地址:" + href)
  42. res_sub_1 = requests.get(href, headers=headers)
  43. soup_sub_1 = BeautifulSoup(res_sub_1.text, 'html.parser')
  44. # ------ 这里最好使用异常处理 ------
  45. try:
  46. # 获取套图的最大数量
  47. pic_max = soup_sub_1.find('div',class_='pagenavi').find_all('span')[6].text
  48. print("套图数量:" + pic_max)
  49. for j in range(1, int(pic_max) + 1):
  50. # print("子内页第几页:" + str(j))
  51. # j int类型需要转字符串
  52. href_sub = href + "/" + str(j)
  53. print(href_sub)
  54. res_sub_2 = requests.get(href_sub, headers=headers)
  55. soup_sub_2 = BeautifulSoup(res_sub_2.text, "html.parser")
  56. img = soup_sub_2.find('div', class_='main-image').find('img')
  57. if isinstance(img, bs4.element.Tag):
  58. # 提取src
  59. url = img.attrs['src']
  60. array = url.split('/')
  61. file_name = array[len(array)-1]
  62. # print(file_name)
  63. # 防盗链加入Referer
  64. headers = {'Referer': href}
  65. img = requests.get(url, headers=headers)
  66. # print('开始保存图片')
  67. f = open(file_name, 'ab')
  68. f.write(img.content)
  69. # print(file_name, '图片保存成功!')
  70. f.close()
  71. exceptExceptionas e:
  72. print(e)
  73. # 主方法
  74. def main():
  75. res = requests.get(mziTu, headers=headers)
  76. # 使用自带的html.parser解析
  77. soup = BeautifulSoup(res.text, 'html.parser')
  78. # 创建文件夹
  79. createFile(save_path)
  80. # 获取首页总页数
  81. img_max = soup.find('div', class_='nav-links').find_all('a')[3].text
  82. # print("总页数:"+img_max)
  83. for i in range(1, int(img_max) + 1):
  84. # 获取每页的URL地址
  85. if i == 1:
  86. page = mziTu
  87. else:
  88. page = mziTu + 'page/' + str(i)
  89. file = save_path + '/' + str(i)
  90. createFile(file)
  91. # 下载每页的图片
  92. print("套图页码:" + page)
  93. download(page, file)
  94. if __name__ == '__main__':
    main ()


El script se ejecuta en el servidor Linux, ejecute el siguiente comando

  1. python 3 mzitu.py
  2. # 或者后台执行
  3. nohup python3 -u mzitu.py > mzitu.log 2>&1 &


En la actualidad, solo se rastrea un conjunto de imágenes, un total de 17G, 5332 imágenes.

  1. [root@itstyle mzitu]# du -sh
  2. 17G .
  3. [root@itstyle mzitu]# ll -s
  4. total 5332


A continuación, abra bien los ojos, el conjunto de imágenes de jalea de pollo está aquí.

 


Resumen
Como un principiante, scripts, sin duda, más o menos tienen algunos problemas o lugares a ser optimizados, también se nota que es usted una pitón para el empleo o aficiones, recuerde: la experiencia de desarrollo del proyecto será siempre el núcleo, si carecen de un nuevo proyecto o nada de ejercicio Tutoriales intensivos de Python, puedes ir al intercambio de Python del editor.
El texto y las imágenes de este artículo provienen de Internet más sus propias ideas. Son solo para el aprendizaje y la comunicación. No tienen ningún uso comercial. Los derechos de autor pertenecen al autor original. Si tiene alguna pregunta, contáctenos a tiempo para su procesamiento.

Supongo que te gusta

Origin www.cnblogs.com/chengxuyuanaa/p/12676001.html
Recomendado
Clasificación