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

Python-Methode zum Crawlen des APP-Download-Links

高洛峰
高洛峰Original
2017-02-24 15:07:582111Durchsuche

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


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


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


爬虫效果

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

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)

  • 总结

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

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

    Stellungnahme:
    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