I. プロジェクトの背景
今最もホットなゲームの一つとして王の栄光は、内部の文字情報はさらに絶妙ですが、公式サイトの制限によって、高精細なイメージをダウンロードしたいです。
例えば、このウェブサイト『ピサン・デスクトップ』では、『Glory of Kings』のイメージに関する情報をクロールしています。
プロジェクトの目的
取得したイメージの一括ダウンロードを実現します。
III.関係する図書館とウェブサイト
1.ウェブサイトは以下の通りです:
http://..///.tm/
2, 関係するライブラリ:requests,lxml
プロジェクト分析
まず、次のページのURLを要求する方法の問題を解決する必要があります。次のページのボタンをクリックして、それぞれ以下のようにウェブサイトの変化を観察することができます:
http://..///_.tp://..///_.tp://..///_.tm
index_()のみが変更されることを確認し、変更された部分を{}に置き換えてから、forループでこのURLをトラバースし、複数のURLリクエストを実装します。
http://..///ex_{}.tm
V. プロジェクトの実施
1、オブジェクトを継承するクラスを定義し、initメソッドを継承するselfを定義し、main関数を定義するmainはselfを継承します。
import requestsfrom lxml import etreeimport timeclass ImageSpider(object): def __init__(self): self.firsr_url = "http://..///.tm" self.url = "http://..///ex_{}.tm" self.headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.77 Safari/537.36" } def main(self): passif __name__ == '__main__': spider= ImageSpider() spider.main()
サイトのリクエストが発生します。
'''リクエストを送信する 応答を得る''' def get_page(self, url): res = requests.get(url=url, headers=self.headers) html = res.content.decode("gbk") #ネットワークコーディング return html #
要求されたデータの処理
'''データを解析する'''def parse_page(self, html): parse_html = etree.HTML(html) image_src_list = parse_html.xpath('//div[@class="list"]/ul/li/a//@href') for image_src in image_src_list: fa = "http://..om" + image_src # print(fa)
4.Google Chromeで、右クリックして開発者ツールを選択するか、F12キーを押します。
5、右クリックのチェックは、次のように、リンクのページの第二レベルのイメージを検索します。
6.セカンダリページへのリクエストは、結果のURLをトラバースするために発生します。
bimg_url = parse_html1.xpath('//div[@class="pic-down"]/a/@href') for i in bimg_url: diet = "http://..om" + i # print(diet) html2 = self.get_page(diet) parse_html2 = etree.HTML(html2) # print(parse_html2) url2 = parse_html2.xpath('//table[@id="endimg"]//tr//td//a/img/@src')
7.取得したイメージをドキュメントに書き込み、イメージのタイトル値をイメージのネーミングとして取得します。
filename = parse_html2.xpath('//table[@id="endimg"]//tr//td//a/@title') for e in filename: # print(e) dirname = "./栄光の王/" + e + '.jpg' html2 = requests.get(url=r, headers=self.headers).content # print(html2) print(dirname) with open(dirname, 'wb') as f: f.write(html2) print("%sダウンロード成功" % filename)
8、メインメソッドの呼び出しでは、次のように。URLの最初のページは正規のものではないので、ここではまず最初のページかどうかを判断します。
def main(self): startPage = int(input(" :")) endPage = int(input(" :")) for page in range(startPage, endPage + 1): if page == 1: url = self.firsr_url else: url = self.url.format(page) # print(url) html = self.get_page(url) print(" %sページクロール成功!!" % page) # print(html) self.parse_page(html)
効果
1、プログラムを実行し、以下のようにコンソールにクロールしたいページ数を入力します。
2.下図のように、ダウンロードに成功したイメージの情報がコンソールに表示されます。
3、ローカルでは、次のように、マップの効果を見ることができます。
まとめ
1、それはあまりにも多くのデータを取得することをお勧めしません、サーバーの負荷に簡単に、浅いことができます。
2、このプロジェクトが高精細イメージのダウンロードに役立つことを願っています。
3は、この記事は、Pythonのネットワーククローラ、クローラライブラリの使用に基づいており、栄光のイメージキャプチャの王を達成するために。時間の実装では、常に問題の様々な、より深遠な理解するために、勤勉な手を、高すぎると低くはありませんされます。
4、多くの英雄がありますが、私たちはあなたのデスクトップの壁紙としてあなたのお気に入りの英雄を選択します。
5、この記事のパートナーのソースコードを必要とする、背景の返信"栄光の王"4つの単語は、あなたが得ることができます。
この記事を読んで何かを得ましたか?この記事を転送し、より多くの人と共有してください。
ITシェアードホーム