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

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

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

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

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

実際、私は当初、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'<h2 id="">(.*?)</h2>',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('/',' ')+'.txt','w') as f:
        print name[0]
        for i in sorted(list(links_dict.keys())):#按季数+集数排序顺序写入
          f.write(links_dict[i][0] + '\n')
      print "Get links ... ", name[0], count
    except Exception,e:
      pass

  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
  def main(self):
    thread1=threading.Thread(target=self.get_urls())
    thread1.start()
    thread1.join()
  if __name__ == '__main__':
  start=time.time()
  a=Archives()
  a.main()
  end=time.time()
  print end-start

完全版のコードもマルチスレッドを使用していますが、Python の GIL のせいで、20,000 以上のドラマが発生するようです。クロールが完了するまでに長い時間がかかりますが、URL エラーや URL の不一致を除けば、クロールの合計時間は 20 分未満です。当初は Redis を使用して 2 台の Linux マシンをクロールしたかったのですが、いろいろ考えた結果、それは不必要だと感じたのでそのままにして、後でさらにデータが必要になったときに実行することにしました。

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

アメリカのドラマ Web サイトをクローリングする Python クローラーに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonの学習:2時間の毎日の研究で十分ですか?Pythonの学習:2時間の毎日の研究で十分ですか?Apr 18, 2025 am 12:22 AM

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Web開発用のPython:主要なアプリケーションWeb開発用のPython:主要なアプリケーションApr 18, 2025 am 12:20 AM

Web開発におけるPythonの主要なアプリケーションには、DjangoおよびFlaskフレームワークの使用、API開発、データ分析と視覚化、機械学習とAI、およびパフォーマンスの最適化が含まれます。 1。DjangoandFlask Framework:Djangoは、複雑な用途の迅速な発展に適しており、Flaskは小規模または高度にカスタマイズされたプロジェクトに適しています。 2。API開発:フラスコまたはdjangorestFrameworkを使用して、Restfulapiを構築します。 3。データ分析と視覚化:Pythonを使用してデータを処理し、Webインターフェイスを介して表示します。 4。機械学習とAI:Pythonは、インテリジェントWebアプリケーションを構築するために使用されます。 5。パフォーマンスの最適化:非同期プログラミング、キャッシュ、コードを通じて最適化

Python vs. C:パフォーマンスと効率の探索Python vs. C:パフォーマンスと効率の探索Apr 18, 2025 am 12:20 AM

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

Python in Action:実世界の例Python in Action:実世界の例Apr 18, 2025 am 12:18 AM

Pythonの実際のアプリケーションには、データ分析、Web開発、人工知能、自動化が含まれます。 1)データ分析では、PythonはPandasとMatplotlibを使用してデータを処理および視覚化します。 2)Web開発では、DjangoおよびFlask FrameworksがWebアプリケーションの作成を簡素化します。 3)人工知能の分野では、TensorflowとPytorchがモデルの構築と訓練に使用されます。 4)自動化に関しては、ファイルのコピーなどのタスクにPythonスクリプトを使用できます。

Pythonの主な用途:包括的な概要Pythonの主な用途:包括的な概要Apr 18, 2025 am 12:18 AM

Pythonは、データサイエンス、Web開発、自動化スクリプトフィールドで広く使用されています。 1)データサイエンスでは、PythonはNumpyやPandasなどのライブラリを介してデータ処理と分析を簡素化します。 2)Web開発では、DjangoおよびFlask Frameworksにより、開発者はアプリケーションを迅速に構築できます。 3)自動化されたスクリプトでは、Pythonのシンプルさと標準ライブラリが理想的になります。

Pythonの主な目的:柔軟性と使いやすさPythonの主な目的:柔軟性と使いやすさApr 17, 2025 am 12:14 AM

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Python:汎用性の高いプログラミングの力Python:汎用性の高いプログラミングの力Apr 17, 2025 am 12:09 AM

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

1日2時間でPythonを学ぶ:実用的なガイド1日2時間でPythonを学ぶ:実用的なガイドApr 17, 2025 am 12:05 AM

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。