ホームページ バックエンド開発 Python チュートリアル Python クローラーがアメリカのドラマの Web サイトを取得

Python クローラーがアメリカのドラマの Web サイトを取得

Mar 18, 2017 am 11:46 AM
python

この記事は、MaNong.com の Xiao Hao によって書かれたものです。転載については、記事の最後にある転載要件をお読みください。有料投稿プランへの参加を歓迎します。

私はいつもアメリカのテレビシリーズを見る習慣がありますが、一方では英語のリスニングの練習にもなり、他方では時間を潰すことができます。以前は動画サイトで視聴することができましたが、国家ラジオ映画テレビ総局による制限令が出てからは、以前のようにアメリカやイギリスの輸入ドラマが同時に更新されなくなったようです。しかし、オタクとして、ドラマを追いかけないわけにはいかないので、インターネットで検索したところ、Thunderを使用してダウンロードできるアメリカのドラマダウンロードサイト[Tiantian American Drama]を発見しました。さまざまなリソースを自由にダウンロードできます。 . 最近、BBC のハイビジョン ドキュメンタリーに夢中です。自然はとても美しいです。

ダウンロードできるリソース Web サイトを見つけましたが、毎回ブラウザを開いて URL を入力し、アメリカのドラマを見つけて、リンクをクリックしてダウンロードする必要があります。時間が経つと手続きが非常に面倒になり、Webサイトのリンクが開けなくなることもあり、ちょっと面倒です。私はたまたま Python クローラー を学習していたので、今日は Web サイト上のすべてのアメリカのドラマのリンクを取得してテキスト ドキュメントに保存するクローラーを作成しました。ドラマが必要な場合は、それを開いてコピーしてください。 Xunlei にリンクしてダウンロードします。

実際、私は当初、URL を検索し、リクエストを使用してそれを開き、ダウンロード リンクを取得し、ホームページから始めてサイト全体をクロールするメソッドを作成する予定でした。ただし、重複リンクが多く、Web サイトの URL が思ったほど規則的ではありません。私が望むような分岐したクローラーをまだ書けていないのです。十分なので、これからも頑張ってください。 。 。

後から気づいたのですが、テレビシリーズへのリンクはすべて記事内にあり、記事の URL の後ろには http://cn163.net/archives/24016/ のように数字があったので、賢明でした。クローラーの経験に基づいて、解決策は、URL を自動的に生成することです。また、それぞれのドラマはユニークなので、どのくらいの記事があるかを調べてみました。 range 関数を使用して数値を直接かつ連続的に生成し、URL を構築します。

しかし、多くの URL は存在しないため、直接ハングアップします。心配しないでください。リクエストを使用しており、その組み込みの status_code は、リクエストによって返されるステータスを決定するために使用されます。コードは 404 です。これをスキップして他のリンクをクロールし、URL の問題を解決します。

以下は上記の手順の実装コードです。

def get_urls(self):
    try:
        for i in range(2015,25000):
            base_url='http://cn163.net/archives/'
            url=base_url+str(i)+'/'
            if requests.get(url).status_code == 404:
                continue
            else:
                self.save_links(url)
    except Exception,e:
        pass
ログイン後にコピー

あとはすんなり進みました。以前ネットで誰かが書いた同様のクローラーを見つけたのですが、1記事しかクロールできなかったので、その正規表現を拝借しました。 BeautifulSoupを使用しましたが、通常の方法ほど効果がなかったので、学習に制限はありません。ただし、その効果はそれほど理想的ではありません。リンクの約半分は正しくクロールできないため、引き続き最適化する必要があります。

#  -*- coding:utf-8 -*-
import requests 
import re
import sys
import threading
import time
reload(sys)
sys.setdefaultencoding('utf-8')
class Archives(object):

    def save_links(self,url):
        try:

            data=requests.get(url,timeout=3)
            content=data.text
            link_pat='"(ed2k://\|file\|[^"]+?\.(S\d+)(E\d+)[^"]+?1024X\d{3}[^"]+?)"'
            name_pat=re.compile(r&#39;<h2 class="entry_title">(.*?)</h2>&#39;,re.S)
            links = set(re.findall(link_pat,content))
            name=re.findall(name_pat,content)
            links_dict = {}
            count=len(links)
        except Exception,e:
            pass
        for i in links:
            links_dict[int(i[1][1:3]) * 100 + int(i[2][1:3])] = i#把剧集按s和e提取编号
        try:
            with open(name[0].replace(&#39;/&#39;,&#39; &#39;)+&#39;.txt&#39;,&#39;w&#39;) as f:
                print name[0]
                for i in sorted(list(links_dict.keys())):#按季数+集数排序顺序写入
                    f.write(links_dict[i][0] + &#39;\n&#39;)
            print "Get links ... ", name[0], count
        except Exception,e:
            pass

    def get_urls(self):
        try:
            for i in range(2015,25000):
                base_url=&#39;http://cn163.net/archives/&#39;
                url=base_url+str(i)+&#39;/&#39;
                if requests.get(url).status_code == 404:
                    continue
                else:
                    self.save_links(url)
        except Exception,e:
            pass
    def main(self):
        thread1=threading.Thread(target=self.get_urls())
        thread1.start()
        thread1.join()
    if __name__ == &#39;__main__&#39;:
    start=time.time()
    a=Archives()
    a.main()
    end=time.time()
    print end-start
ログイン後にコピー

フルバージョンのコードもマルチスレッドを使用していますが、PythonのGILのせいで無駄な気がします。クローリングを完了するには長い時間がかかると思いました。ただし、URL は除きます。エラーや一致しないものの場合、クロール時間の合計は 20 分未満です。当初は Redis を使用して 2 台の Linux マシンをクロールしたかったのですが、いろいろ考えた結果、それは不必要だと感じたのでそのままにして、後でさらにデータが必要になったときに実行することにしました。

このプロセス中に私を悩ませたもう 1 つの問題は、ファイル名の保存でした。txt テキスト形式のファイル名にはスペースを含めることができますが、スラッシュ、バックスラッシュ、括弧などを含めることはできません。これが問題で、最初はデータをクロールする際のエラーだと思いましたが、クロールされたドラマのタイトルにスラッシュが含まれていることがわかりました。惨めな。 。

以上がPython クローラーがアメリカのドラマの Web サイトを取得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

vscodeとは何ですか?vscodeとは何ですか? vscodeとは何ですか?vscodeとは何ですか? Apr 15, 2025 pm 06:45 PM

VSコードは、Microsoftが開発した無料のオープンソースクロスプラットフォームコードエディターと開発環境であるフルネームVisual Studioコードです。幅広いプログラミング言語をサポートし、構文の強調表示、コード自動完了、コードスニペット、および開発効率を向上させるスマートプロンプトを提供します。リッチな拡張エコシステムを通じて、ユーザーは、デバッガー、コードフォーマットツール、GIT統合など、特定のニーズや言語に拡張機能を追加できます。 VSコードには、コードのバグをすばやく見つけて解決するのに役立つ直感的なデバッガーも含まれています。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

See all articles