【Python】Webクローラー(8):恥ずかしい事典 Webクローラー(v0.3)のソースコードと解析(簡易アップデート)
Q&A:
1. 恥ずかしいことの百科事典が一定期間利用できないと表示されるのはなぜですか?
回答: 少し前に、Encyclopedia of Embarrassments にヘッダー検査が追加されたため、コード内でヘッダーをシミュレートする必要がありました。コードが修正され、通常どおり使用できるようになりました。
2. なぜ個別に新しいスレッドを作成する必要があるのですか?
回答: 基本的なプロセスは次のとおりです。クローラーはバックグラウンドで新しいスレッドを開始し、恥ずかしい話百科事典の 2 ページをクロールします。残り 2 ページ未満の場合は、別のページをクロールします。ユーザーが Enter キーを押すと、オンラインにアクセスするのではなく、インベントリから最新のコンテンツのみを取得するため、ブラウジングがよりスムーズになります。ロードをメインスレッドに置くこともできますが、これにより、クローリングプロセス中に長い待ち時間が発生するという問題が発生します。
プロジェクト内容:
Pythonで書かれた恥ずかしい事事典のWebクローラーです。
手順:
新しい Bug.py ファイルを作成し、そのファイルにコードをコピーし、ダブルクリックして実行します。
プログラム機能:
コマンドプロンプトで恥ずかしいことの百科事典を閲覧します。
原理の説明:
まず、不幸事典のホームページを閲覧してください: http://www.qiushibaike.com/hot/page/1
ご覧のとおり、page/ の後の数字はリンク内には対応するページ番号が記載されています。今後の執筆に備えて、これを覚えておいてください。
次に、右クリックしてページのソース コードを表示します。
観察すると、各段落が div でマークされていることがわかりました。ここで、クラスはコンテンツ、タイトルは投稿時刻である必要があります。正規表現を使用するだけで済みます。それを「差し引く」それだけです。
原理を理解したら、残りは正規表現の内容です。次のブログ投稿を参照してください:
http://blog.csdn.net/wxg694175346/article/details/8929576
効果:
# -*- coding: utf-8 -*- import urllib2 import urllib import re import thread import time #----------- 加载处理糗事百科 ----------- class Spider_Model: def __init__(self): self.page = 1 self.pages = [] self.enable = False # 将所有的段子都扣出来,添加到列表中并且返回列表 def GetPage(self,page): myUrl = "http://m.qiushibaike.com/hot/page/" + page user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = { 'User-Agent' : user_agent } req = urllib2.Request(myUrl, headers = headers) myResponse = urllib2.urlopen(req) myPage = myResponse.read() #encode的作用是将unicode编码转换成其他编码的字符串 #decode的作用是将其他编码的字符串转换成unicode编码 unicodePage = myPage.decode("utf-8") # 找出所有class="content"的div标记 #re.S是任意匹配模式,也就是.可以匹配换行符 myItems = re.findall('<div.*?class="content".*?title="(.*?)">(.*?)</div>',unicodePage,re.S) items = [] for item in myItems: # item 中第一个是div的标题,也就是时间 # item 中第二个是div的内容,也就是内容 items.append([item[0].replace("\n",""),item[1].replace("\n","")]) return items # 用于加载新的段子 def LoadPage(self): # 如果用户未输入quit则一直运行 while self.enable: # 如果pages数组中的内容小于2个 if len(self.pages) < 2: try: # 获取新的页面中的段子们 myPage = self.GetPage(str(self.page)) self.page += 1 self.pages.append(myPage) except: print '无法链接糗事百科!' else: time.sleep(1) def ShowPage(self,nowPage,page): for items in nowPage: print u'第%d页' % page , items[0] , items[1] myInput = raw_input() if myInput == "quit": self.enable = False break def Start(self): self.enable = True page = self.page print u'正在加载中请稍候......' # 新建一个线程在后台加载段子并存储 thread.start_new_thread(self.LoadPage,()) #----------- 加载处理糗事百科 ----------- while self.enable: # 如果self的page数组中存有元素 if self.pages: nowPage = self.pages[0] del self.pages[0] self.ShowPage(nowPage,page) page += 1 #----------- 程序的入口处 ----------- print u""" --------------------------------------- 程序:糗百爬虫 版本:0.3 作者:why 日期:2014-06-03 语言:Python 2.7 操作:输入quit退出阅读糗事百科 功能:按下回车依次浏览今日的糗百热点 --------------------------------------- """ print u'请按下回车浏览今日的糗百内容:' raw_input(' ') myModel = Spider_Model() myModel.Start()
上記は、恥ずかしいこと大百科の [Python] Web Crawler (8): Web Crawler (v0.3) のソース コードと分析 (簡易アップデート) の内容です。 PHP 中国語 Web サイト (www .php.cn) に注意してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

小さなXMLファイルの場合、注釈コンテンツをテキストエディターに直接置き換えることができます。大きなファイルの場合、XMLパーサーを使用してそれを変更して、効率と精度を確保することをお勧めします。 XMLコメントを削除するときは注意してください。コメントを維持すると、通常、コードの理解とメンテナンスが役立ちます。高度なヒントは、XMLパーサーを使用してコメントを変更するためのPythonサンプルコードを提供しますが、特定の実装を使用するXMLライブラリに従って調整する必要があります。 XMLファイルを変更する際のエンコード問題に注意してください。 UTF-8エンコードを使用して、エンコード形式を指定することをお勧めします。

XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。

XMLフォーマットツールは、読みやすさと理解を向上させるために、ルールに従ってコードを入力できます。ツールを選択するときは、カスタマイズ機能、特別な状況の処理、パフォーマンス、使いやすさに注意してください。一般的に使用されるツールタイプには、オンラインツール、IDEプラグイン、コマンドラインツールが含まれます。

モバイルには、単純で直接無料のXMLからPDFツールはありません。必要なデータ視覚化プロセスには、複雑なデータの理解とレンダリングが含まれ、市場のいわゆる「無料」ツールのほとんどは経験がありません。コンピューター側のツールを使用したり、クラウドサービスを使用したり、アプリを開発してより信頼性の高い変換効果を取得することをお勧めします。

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

単一のアプリケーションで携帯電話でXMLからPDF変換を直接完了することは不可能です。クラウドサービスを使用する必要があります。クラウドサービスは、2つのステップで達成できます。1。XMLをクラウド内のPDFに変換し、2。携帯電話の変換されたPDFファイルにアクセスまたはダウンロードします。
