まずは準備作業です
Python 2.7.11: python をダウンロード
Pycharm: Pycharm をダウンロード
このうち、現在 python2 と python3 が同時リリースされており、ここでは python2 を環境として使用しています。 Pycharm は比較的効率的な Python IDE ですが、支払いが必要です。
実装の基本的な考え方
まず第一に、ターゲットWebサイト: Androidマーケット
[App]をクリックしてキーページに入ります:
アプリケーションインターフェースにジャンプした後、下の写真の赤いボックスでマークされた 3 つの場所に注意する必要があります:
まずアドレスバーの URL に注意し、次に無料ダウンロード ボタンに注意してください。下部にあるページめくりオプション。 「無料ダウンロード」ボタンをクリックすると、対応する APP がすぐにダウンロードされるため、クリックしてダウンロード リンクを取得し、APP を直接ダウンロードするという考えです。
クローラーの作成
解決する必要がある最初の点: 上記のダウンロード リンクをどのように取得するか?ここで、ブラウザが Web ページを表示する方法の基本原理を紹介する必要があります。簡単に言うと、ブラウザはパーサーに似たツールで、HTML やその他のコードを取得すると、対応するルールに従って解析してレンダリングし、ページを表示します。
ここでは Google Chrome を使用しています。ページを右クリックして [検査] をクリックすると、Web ページの元の HTML コードが表示されます。
HTML コードが表示されても心配しないでください。Google Chrome のレビューです。要素 ページ コントロールに対応する HTML コードを見つけるのに役立つ小さな関数があります
場所:
上の図に示すように、上の長方形のボックス内の小さな矢印をクリックし、対応する位置をクリックしますページの右側 HTML コードが自動的に配置され、強調表示されます。
次に、ダウンロード ボタンに対応する HTML コードを見つけます:
ボタンに対応するコードには、対応するダウンロード リンク [/appdown/com.tecent.mm] があることがわかります。ダウンロードリンクは http://apk.hiapk.com/appdown/com.tecent.mm です
まず Python を使用してページ全体の HTML を取得します。これは非常に簡単です。対応する URL を入力します。 requests.get(url)
def geteveryapp(self,source): everyapp = re.findall('(<li class="list_item".*?</li>)',source,re.S) #everyapp2 = re.findall('(<p class="button_bg button_1 right_mt">.*?</p>)',everyapp,re.S) return everyapp
def getinfo(self,eachclass): info = {} str1 = str(re.search('<a href="(.*?)">', eachclass).group(0)) app_url = re.search('"(.*?)"', str1).group(1) appdown_url = app_url.replace('appinfo', 'appdown') info['app_url'] = appdown_url print appdown_url return info
豁然开朗,我们可以在每次的请求中替换URL中对应的id值实现翻页。
def changepage(self,url,total_page): now_page = int(re.search('pi=(\d)', url).group(1)) page_group = [] for i in range(now_page,total_page+1): link = re.sub('pi=\d','pi=%s'%i,url,re.S) page_group.append(link) return page_group
爬虫效果
关键位置说完了,我们先看下最后爬虫的效果:
在TXT文件中保存结果如下:
直接复制进迅雷就可以批量高速下载了。
附上全部代码
#-*_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('pi=(\d)', url).group(1)) page_group = [] for i in range(now_page,total_page+1): link = re.sub('pi=\d','pi=%s'%i,url,re.S) page_group.append(link) return page_group def geteveryapp(self,source): everyapp = re.findall('(
总结
选取的目标网页相对结构清晰简单,这是一个比较基本的爬虫。代码写的比较乱请见谅,以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有问题大家可以留言交流。
更多APP ダウンロードリンクをクロールする Python メソッド相关文章请关注PHP中文网!