Ich habe das 100G-Schwesternetzwerk mit Python gecrawlt, was es wert ist, gesammelt zu werden

 


Das Vorwort
arbeitet an der Unterstützung von Überwachungsfunktionen und hat festgestellt, dass viele Skripte auf Python basieren. Ich habe gehört, dass der Name schon lange her ist, das Leben kurz ist, ich lerne Python, das ist kein Scherz. Mit dem Aufkommen von künstlicher Intelligenz, maschinellem Lernen und tiefem Lernen wird der größte Teil des derzeit auf dem Markt befindlichen Codes für künstliche Intelligenz hauptsächlich in Python geschrieben. Im Zeitalter der künstlichen Intelligenz ist es also Zeit, Python zu lernen.

Einstiegshandbuch
Für Schüler ohne Erfahrung in der Sprachentwicklung wird empfohlen, mit dem Anfangssystem zu beginnen, unabhängig davon, ob es sich um ein Buch-, Video- oder Text-Tutorial handelt.
Beachten Sie auch: Egal, ob Sie eine Python-Beschäftigung oder Hobbys haben, denken Sie daran: Die Erfahrung in der Projektentwicklung ist immer der Kern. Wenn Sie keine neuen Projektübungen haben oder keine Python-Tutorials haben, können Sie zum Python-Austausch des Editors gehen. Rock: Sieben Kleider und neun Sie finden es unter der Umrechnung von sieben oder sieben und fünf (das Homonym der Zahlen). Es gibt viele neue Lernprojekte, und Sie können auch mit dem alten Fahrer um Rat fragen!

Wenn Sie ein Student mit anderen Erfahrungen in der Sprachentwicklung sind, wird empfohlen, mit einem Fall zu beginnen, z. B. dem Crawlen einer Reihe von Bildern einer Website.
Da die Sprache alle herausgefunden ist, kann der Code im Grunde genommen acht oder neun lesen, solange Sie einen Sinn für Sprache, Grammatik und dergleichen haben möchten.
Daher wird nicht empfohlen, dass erfahrene Entwickler von Grund auf lernen, ob es sich um ein Video oder ein Buch handelt. Es ist zu verschwenderisch, mit dem Erlernen einer Sprache zu beginnen.
Wenn Sie tiefer gehen, müssen Sie natürlich immer noch systematisch lernen.
Das Software-Tool
Python3
ist die neueste Version des
Installations-Tutorials für Python 3.7.1. Empfohlen:

Win-Download-Adresse:

Linux Herunterladen:

PyCharm
visuelle Entwicklungstools:

Fall
Umsetzungsschritte
zu Schwester Abbildung als Beispiel, ist eigentlich sehr einfach, in die folgenden geteilt Vier Schritte:

  • Ermitteln Sie die Anzahl der Seiten auf der Startseite und erstellen Sie einen Ordner, der der Seitenzahl entspricht
  • Rufen Sie die Spaltenadresse der Seite ab
  • Geben Sie die Spalte ein und erhalten Sie die Seitenzahl der Spalte (unter jeder Spalte befinden sich mehrere Bilder, die auf Seiten angezeigt werden).
  • Holen Sie sich die Bilder in den Registerkarten unter der Spalte und laden Sie sie herunter

Hinweis
Crawling Prozess, müssen auch achten Sie auf die folgenden Punkte können Ihnen nützlich sein:
1) die Durchführung von Bibliothek, in der Tat, ähnlich wie Java im Rahmen oder Werkzeuge, sind die zugrunde liegenden ein gutes Paket
Bibliotheken von Drittanbietern zu installieren

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


Importieren Sie Bibliotheken von Drittanbietern

  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) Definieren Sie die Methodenfunktion. Ein Crawler kann Hunderte von Zeilen haben. Versuchen Sie also, keinen Sloppy zu schreiben

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


3) Definieren Sie globale Variablen

  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) Diebstahlschutzkette
Einige Websites haben eine allmächtige Python-Lösung zur Diebstahlschutzkette hinzugefügt

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


5) Der
Alibaba Cloud Server wird verwendet, um die Version des Linux-Servers zu wechseln. Die Standardversion ist python2, python3 wird von selbst installiert

  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) Abnormale Erfassung
Während des Crawling-Vorgangs können abnormale Seiten auftreten. Hier erfassen wir, ohne die nachfolgenden Vorgänge zu beeinträchtigen

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


Code implementiert
bearbeiten das Skript: 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 ()


Das Skript wird unter dem Linux-Server ausgeführt. Führen Sie den folgenden Befehl aus

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


Derzeit wird nur ein Satz von Bildern gecrawlt, insgesamt 17G, 5332 Bilder.

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


Als nächstes öffnen Sie bitte Ihre Augen weit, die Bilder von Hühnergelee sind hier.

 


Zusammenfassung
Als Anfänger, Skripte, sicherlich mehr oder weniger haben einige Probleme oder Orte optimiert werden, auch zur Kenntnis , ob Sie eine Python für eine Beschäftigung oder Hobbys sind, denken Sie daran: Projektentwicklung Erfahrung wird immer der Kern sein, wenn Sie ein neues Projekt oder keine Übung fehlt Python-intensive Tutorials, Sie können zum Python-Austausch des Editors gehen. Rock: Qiyiyi 9.7 bar und fünf (digitale Homophonie) finden Sie unter der Konvertierung, es gibt viele neue Tutorial-Projekte, Sie können auch mit dem alten Treiber um Rat fragen!
Der Text und die Bilder in diesem Artikel stammen aus dem Internet und Ihren eigenen Ideen. Sie dienen nur zum Lernen und zur Kommunikation. Sie haben keine kommerzielle Nutzung. Das Urheberrecht liegt beim ursprünglichen Autor. Wenn Sie Fragen haben, kontaktieren Sie uns bitte rechtzeitig zur Bearbeitung.

Ich denke du magst

Origin www.cnblogs.com/chengxuyuanaa/p/12676001.html
Empfohlen
Rangfolge