XiaobaiがPythonクローラーを学習するプロセスを記録する(1)
Pythonの基本的な構文を学んだ後、python3.6.4とpycharm2017をインストールし、Pythonクローラーの旅を始めました。
import lxml.html,requests
url = 'https://www.python.org/dev/peps/pep-0020/'
xpath = '//*[@id="the-zen-of-python"]/pre/text()'
res = requests.get(url)
ht = lxml.html.fromstring(res.text)
text = ht.xpath(xpath)
print('Hello,\n'+''.join(text))
これはHelloSpiderと呼ばれるクローラープログラムです。Xiaobaiが学習したい最初のクローラープログラムです。PythonクローラーフィールドではHelloWorldと呼ぶことができます。
私は最初に問題に遭遇しました。選択したPythonインタープリターがPycharmに表示されません。データを調べたところ、プロジェクトインタープリターでlxmlやその他のライブラリが構成されていないことが原因であることがわかりました。
調整後、「The ZenofPython」の内容が正常に出力されました。本当に666!
次に、HelloSpiderプログラムを文ごとに分析します
import lxml.html,requests
上記のコードは、インポートを使用して2つのモジュールlxml.htmlとリクエストをインポートします
url = 'https://www.python.org/dev/peps/pep-0020/'
上記のコードは、クロールされるWebページへのリンクである変数urlを定義します
xpath = '//*[@id="the-zen-of-python"]/pre/text()'
私は長い間この場所で立ち往生してきました、そして私は後で理解するかもしれません。xpath変数は要素を見つけるために使用され、lxmlライブラリから取得されます。文id = "the-zen-of-pythonは配置されるオブジェクトです。これは、htmlのテキスト情報に従って、name = ...、class = ...などに置き換えることができます。
それは「//タグ名[@attribute = "属性値"]」です
次の/ preはテキストのインデックスです。これは必須です。削除すると、正常に実行されません。テキストの範囲を明確にする必要があります。
/ text()に関しては、多分それはテキストを取得することですか?
res = requests.get(url)
上記のコードは、Requestsのget()メソッドを使用してHTTP GETリクエストをURLに送信し、戻り値がresに割り当てられます。
ht = lxml.html.fromstring(res.text)
fromstring()は、lxml形式を解析するときに、テキストコンテンツをHtmlElementオブジェクトに変換します。正直、ここはよくわかりません。
text = ht.xpath(xpath)
print('Hello,\n'+''.join(text))
出力テキスト
詳細はたくさんあるので、繰り返しません。
その後、Webサイトがクロール可能かどうか、Webサイトで使用されているテクノロジ、およびWebサイトの所有者情報を確認する方法を学びました。