Heim Backend-Entwicklung Python-Tutorial Python-Methode zum Crawlen des APP-Download-Links

Python-Methode zum Crawlen des APP-Download-Links

Feb 24, 2017 pm 03:07 PM

Das erste ist die Vorbereitungsarbeit

Python 2.7.11: Python herunterladen

Pycharm: Pycharm herunterladen

wobei Python2 und Python3 ist derzeit eine synchrone Version, ich verwende hier Python2 als Umgebung. Pycharm ist eine relativ effiziente Python-IDE, die jedoch kostenpflichtig ist.

Grundidee der Umsetzung

Zunächst unsere Zielwebsite: Android Market

Klicken Sie auf [App] Um unsere Schlüsselseiten aufzurufen:

Python-Methode zum Crawlen des APP-Download-Links

Nachdem wir zur Anwendungsoberfläche gesprungen sind, müssen wir auf drei Stellen achten. Das rote Kästchen im Bild unten zeigt an:

Python-Methode zum Crawlen des APP-Download-Links

Achten Sie zuerst auf die URL in der Adressleiste, dann auf die Schaltfläche zum kostenlosen Download und dann auf die Optionen zum Umblättern unten. Wenn Sie auf die Schaltfläche „Kostenloser Download“ klicken, wird die entsprechende APP sofort heruntergeladen. Unsere Idee ist es also, den Click-to-Download-Link zu erhalten und die APP direkt herunterzuladen.

Einen Crawler schreiben

Der erste Punkt, der gelöst werden muss: Wie erhalten wir den oben genannten Download-Link? Hier muss ich die Grundprinzipien der Darstellung von Webseiten durch Browser vorstellen. Einfach ausgedrückt ist der Browser ein Tool, das einem Parser ähnelt. Wenn er HTML und andere Codes erhält, analysiert und rendert er sie gemäß den entsprechenden Regeln, sodass wir die Seite sehen können.

Ich verwende hier Google Chrome. Klicken Sie mit der rechten Maustaste auf die Seite und klicken Sie auf „Inspizieren“, um den ursprünglichen HTML-Code der Webseite anzuzeigen:

Python-Methode zum Crawlen des APP-Download-Links

Schauen Machen Sie sich keine Sorgen, wenn Sie auf umwerfende HTML-Codes stoßen. Das Überprüfungselement von Google Chrome verfügt über eine nützliche kleine Funktion, die uns dabei helfen kann, den HTML-Code zu finden, der dem Seitensteuerelement entspricht.

Ort:

Python-Methode zum Crawlen des APP-Download-Links

Wie im Bild oben gezeigt, klicken Sie auf den kleinen Pfeil im rechteckigen Feld oben und dann auf die entsprechende Position auf der Seite. Der HTML-Code auf der rechten Seite wird automatisch positioniert und hervorgehoben.

Als nächstes suchen wir den HTML-Code, der dem Download-Button entspricht:

Python-Methode zum Crawlen des APP-Download-Links

Sie können sehen, dass es im Code, der dem Button entspricht, einen entsprechenden Download gibt Link: [/ appdown/com.tecent.mm], plus das Präfix, der vollständige Download-Link lautet http://apk.hiapk.com/appdown/com.tecent.mm

Verwenden Sie zuerst Python. Es ist sehr einfach, den HTML-Code der gesamten Seite abzurufen. Verwenden Sie einfach „requests.get(url) “ und geben Sie die entsprechende URL ein.

Python-Methode zum Crawlen des APP-Download-Links

Übernehmen Sie als Nächstes beim Crawlen der wichtigsten Informationen der Seite die Idee „Erfassen Sie zuerst die Großen, dann die Kleinen“. Sie können sehen, dass es 10 APPs auf einer Seite gibt, entsprechend 10 Elementen im HTML-Code:

Python-Methode zum Crawlen des APP-Download-Links

Und jedes li-Tag enthält die Attribute (Name) der jeweiligen APP . , Download-Link usw.). Im ersten Schritt extrahieren wir also diese 10 Li-Tags:


def geteveryapp(self,source):
  everyapp = re.findall(&#39;(<li class="list_item".*?</li>)&#39;,source,re.S)
  #everyapp2 = re.findall(&#39;(<p class="button_bg button_1 right_mt">.*?</p>)&#39;,everyapp,re.S)
  return everyapp
Nach dem Login kopieren


Hier wird ein einfacher regulärer Ausdruck verwendet. Wissen

Extrahieren Sie den Download-Link im li-Tag:


def getinfo(self,eachclass):
  info = {}
  str1 = str(re.search(&#39;<a href="(.*?)">&#39;, eachclass).group(0))
  app_url = re.search(&#39;"(.*?)"&#39;, str1).group(1)
  appdown_url = app_url.replace(&#39;appinfo&#39;, &#39;appdown&#39;)
  info[&#39;app_url&#39;] = appdown_url
  print appdown_url
  return info
Nach dem Login kopieren


Was als nächstes gesagt werden muss Die Schwierigkeit besteht darin, Seiten umzublättern. Nachdem wir unten auf die Schaltfläche zum Umblättern geklickt haben, können wir sehen, dass sich die Adressleiste wie folgt geändert hat:

Python-Methode zum Crawlen des APP-Download-Links

Python-Methode zum Crawlen des APP-Download-Links

豁然开朗,我们可以在每次的请求中替换URL中对应的id值实现翻页。


def changepage(self,url,total_page):
  now_page = int(re.search(&#39;pi=(\d)&#39;, url).group(1))
  page_group = []
  for i in range(now_page,total_page+1):
   link = re.sub(&#39;pi=\d&#39;,&#39;pi=%s&#39;%i,url,re.S)
   page_group.append(link)
  return page_group
Nach dem Login kopieren


爬虫效果

关键位置说完了,我们先看下最后爬虫的效果:

Python-Methode zum Crawlen des APP-Download-Links

在TXT文件中保存结果如下:

Python-Methode zum Crawlen des APP-Download-Links

直接复制进迅雷就可以批量高速下载了。

附上全部代码


#-*_coding:utf8-*-
import requests
import re
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

class spider(object):
 def __init__(self):
  print u'开始爬取内容'
 def getsource(self,url):
  html = requests.get(url)
  return html.text

 def changepage(self,url,total_page):
  now_page = int(re.search(&#39;pi=(\d)&#39;, url).group(1))
  page_group = []
  for i in range(now_page,total_page+1):
   link = re.sub(&#39;pi=\d&#39;,&#39;pi=%s&#39;%i,url,re.S)
   page_group.append(link)
  return page_group

 def geteveryapp(self,source):
  everyapp = re.findall('(
  • )',source,re.S) return everyapp def getinfo(self,eachclass): info = {} str1 = str(re.search(&#39;<a href="(.*?)">&#39;, eachclass).group(0)) app_url = re.search(&#39;"(.*?)"&#39;, str1).group(1) appdown_url = app_url.replace(&#39;appinfo&#39;, &#39;appdown&#39;) info[&#39;app_url&#39;] = appdown_url print appdown_url return info def saveinfo(self,classinfo): f = open('info.txt','a') str2 = "http://apk.hiapk.com" for each in classinfo: f.write(str2) f.writelines(each['app_url'] + '\n') f.close() if __name__ == '__main__': appinfo = [] url = 'http://apk.hiapk.com/apps/MediaAndVideo?sort=5&pi=1' appurl = spider() all_links = appurl.changepage(url, 5) for link in all_links: print u'正在处理页面' + link html = appurl.getsource(link) every_app = appurl.geteveryapp(html) for each in every_app: info = appurl.getinfo(each) appinfo.append(info) appurl.saveinfo(appinfo)
  • Nach dem Login kopieren


    总结

    选取的目标网页相对结构清晰简单,这是一个比较基本的爬虫。代码写的比较乱请见谅,以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有问题大家可以留言交流。

    更多Python-Methode zum Crawlen des APP-Download-Links相关文章请关注PHP中文网!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

    Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

    Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Apr 02, 2025 am 07:18 AM

    Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

    Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Apr 02, 2025 am 07:15 AM

    Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

    Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Apr 01, 2025 pm 11:15 PM

    Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

    Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Apr 01, 2025 pm 10:51 PM

    Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

    Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Apr 01, 2025 pm 11:18 PM

    Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

    Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Apr 02, 2025 am 06:36 AM

    Verwenden Sie Python im Linux -Terminal ...

    Wie bekomme ich Nachrichtendaten, die den Anti-Crawler-Mechanismus von Investing.com umgehen? Wie bekomme ich Nachrichtendaten, die den Anti-Crawler-Mechanismus von Investing.com umgehen? Apr 02, 2025 am 07:03 AM

    Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

    See all articles