[Scrapyティーチング5] Scrapyフレームワークの重要なXPathポジショニング要素メソッドを習得する

ここに画像の説明を挿入します
Scrapy Webクローラーフレームワークは、記事[Scrapyチュートリアル4]で共有されているcss()メソッド(メソッド)を提供するだけでなく、Web要素(Element)を見つけるためのScrapyフレームワークの重要なCSSポジショニングエレメントメソッドを習得します。xpathも提供します。 ()開発者が使用する配置方法(方法)。

XPath(XML Path Language)は、アーカイブパスと同様の構文を使用してXMLファイル内の特定の(ノード)を見つける言語です。ノード(ノード)の場所を効果的に見つけることができるため、PythonWebページでも広く使用されています。クローラーの要素が配置されます。

この記事では引き続き[Scrapyチュートリアル4]を使用します。Scrapyフレームワークの重要なCSSポジショニング要素メソッドをマスターします。記事内のINSIDEのインターネットトレンド観測Webサイト-AINewsを使用して、組み込みのxpathの使用方法を示します。 Scrapyフレームワーク内。()メソッド(メソッド)クロールするWebページのコンテンツを検索します。重要なポイントは次の
とおりです。単一の要素値を取得する
ScrapyXPathメソッド複数の要素値を取得する
ScrapyXPathメソッドサブ要素値
を取得するScrapyXPathメソッド要素属性値を取得するScrapyXPathメソッド

1つは、単一の要素値を取得するためのScrapyXPathメソッドです。

まず、INSIDEのハードクラックされたインターネットトレンド観察ウェブサイト-AIニュースページを開き、記事タイトルのマウスショートカットをクリックして[チェック]を選択すると、次の図に示すようなHTMLソースコードが表示さ
ここに画像の説明を挿入します
れます。 XPath構文によるこのタグの場所は、次の例のように、ファイルパスと同じ構文になります。

// a [@ class ='js-auto_break_title']

ルートディレクトリの下にあるタグを意味し、「[@ class = '']」を使用してスタイルカテゴリ(クラス)を指定し、記事タイトルのタグを見つけられるようにします。

次に、[Scrapyチュートリアル4]によって作成されたScrapy Webクローラープロジェクトを開きます。Scrapyフレームワークの重要なCSSポジショニング要素メソッドをマスターします。spiders / inside.pyのparse()メソッド(メソッド)で、Webページの応答の結果(応答)、代わりにxpath()メソッド(メソッド)を呼び出し、次の例のように、見つかったXPathパスを貼り付けます。

进口沙皮 刮y的
类InsideSpider (scrapy 。蜘蛛): 
    名称= “内部” 
    allowed_domains = [ 'www.inside.com.tw' ] 
    start_urls = [ 'https://www.inside.com.tw/tag/ai' ] 
    def parse (self ,response ):
        标题=回复。xpath (
            “ // a [@ class ='js-auto_break_title'] / text()” )。得到()
        打印(标题)

次に、次のコマンドを使用して、内部Webクローラーを実行します。

$ scrapy爬进里面

の結果

微软新专利:跟《黑镜》一样的模拟真人聊天AI!AI !

上記の例の11行目では、XPathパスを使用してクロールするタグを見つけた後、Webページのコンテンツを取得する必要があるため、キーワード「/ text()」を末尾に追加する必要があります。 XPathパスを指定し、get()メソッド(メソッド)を呼び出して単一の要素値を取得します。

次に、複数の要素値を取得するためのScrapyXPathメソッド

Scrapy xpath()メソッド(メソッド)を使用して複数の要素値を取得する場合は、XPathパスを使用してクロールするWebページ要素タグを見つけてから、getall()メソッド(メソッド)を呼び出します。次の例:

进口沙皮 刮y的
类InsideSpider (scrapy 。蜘蛛): 
    名称= “内部” 
    allowed_domains = [ 'www.inside.com.tw' ] 
    start_urls = [ 'https://www.inside.com.tw/tag/ai' ] 
    def parse (self ,response ):
        标题=回应。xpath (
            “ // a [@ class ='js-auto_break_title'] / text()” )。getall ()
        打印(标题)

の結果

[
  '微软新专利:跟《黑镜》一样的模拟真人聊天AI!”, '微软新专利:跟《黑镜》一样的模拟真人聊天AI!” , 
  '【手臂专栏】一次看懂人工智慧:云端,边缘与终端人工智慧“,'【手臂专栏】一次看懂人工智慧:云端,边缘与终端人工智慧“ ,
  '2021台北电玩展以新形态亮相:虚实同步布局', “ 2021台北电玩展以新形态亮相:虚实同步布局” , 
  “用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减”,“用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减” ,
  “烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点“ breakie”,“ cakie””,“烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点“ breakie”,“ cakie”” ,
  '她用数据战胜人性,主推近似课程一年后用户翻七倍''她用数据战胜人性,主推近似课程一年后用户翻七倍' ,
  “【有线硬塞】你知道银河系的历史,已被重新改写了吗?”, “【有线硬塞】你知道银河系的历史,已被重新改写了吗?” , 
  “祖克柏放弃新年愿望!2020过的好吗?盘点脸书满城风雨的一年”,“祖克柏放弃新年愿望!2020过的好吗?盘点脸书满城风雨的一年” ,

......
]]

実行結果からわかるように、getall()メソッド(メソッド)は、スタイルカテゴリ(クラス)が「js-auto_break_title」であるすべてのラベルタイトルテキストを含むリスト(リスト)を返します。次に、Circleを返す必要があります。読むには、次の例:

进口沙皮 刮y的
类InsideSpider (scrapy 。蜘蛛): 
    名称= “内部” 
    allowed_domains = [ 'www.inside.com.tw' ] 
    start_urls = [ 'https://www.inside.com.tw/tag/ai' ] 
    def parse (self ,response ):
        标题=回应。xpath (
            “ // a [@ class ='js-auto_break_title'] / text()” )。getall ()
        为标题在标题:
            打印(标题)

の結果

微软新专利:跟《黑镜》一样的模拟真人聊天AI!AI !
【手臂专栏】一次看懂人工智慧:云端,边缘与终端人工智慧【Arm专栏】一次看懂人工智慧:云端,边缘与终端人工智慧 
2021台北电玩展以新形态亮相:虚实同步布局2021台北电玩展以新形态亮相:虚实同步布置 
用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减
烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点「breakie」,「cakie」烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点「breakie 」,「cakie 」
她用数据战胜人性,主推疗法课程一年后用户翻七倍她用数据战胜人性,主推疗法课程一年后用户翻七倍
【有线硬塞】你知道银河系的历史,已被重新改写了吗?【有线硬塞】你知道银河系的历史,已被重新改写了吗?
2020年过的好吗?盘点脸书满城风雨的一年祖克柏放弃新年愿望!2020过的好吗?盘点脸书满城风雨的一年 

......

この記事で使用されているget()メソッドとgetall()メソッド(メソッド)は、[Scrapyチュートリアル4]の公式の新しいバージョンのScrapyのScrapyフレームワーク記事の重要なCSSポジショニング要素をマスターするのと同じです。 extract_first()およびextract()メソッド(メソッド)は、以下の公式ドキュメントに従って引き続きサポートされますが、読者がメソッド(メソッド)の新しいバージョンを使用して相互に緊密に連携できるようにすることをお勧めします。

ここに画像の説明を挿入します
第三に、子要素の値を取得するためのScrapy XPathメソッド。PythonWeb
クローラーを開発する場合、レイヤーごとのメソッドでクロールする子要素(Element)を見つける必要がある可能性が非常に高くなります。 (方法)これまでのところ、Scrapy用のXPath()メソッドは、以下の図に示すように、XPathは、例として、タグのHTMLソースコードを取る置換:
ここに画像の説明を挿入します
我々はしたいと

ラベルを付け、レイヤーごとにラベルを見つけます。XPathパスは次の例の11行目のようになります。

进口沙皮 刮y的
类InsideSpider (scrapy 。蜘蛛): 
    名称= “内部” 
    allowed_domains = [ 'www.inside.com.tw' ] 
    start_urls = [ 'https://www.inside.com.tw/tag/ai' ] 
    def parse (self ,response ):
        标题=回应。xpath (
            “ // div [@ class ='post_list_item_content'] / h3 [@ class ='post_title'] / a / text()” )。getall ()
        为标题在标题:
            打印(标题)

の結果

微软新专利:跟《黑镜》一样的模拟真人聊天AI!AI !
【手臂专栏】一次看懂人工智慧:云端,边缘与终端人工智慧【Arm专栏】一次看懂人工智慧:云端,边缘与终端人工智慧 
2021台北电玩展以新形态亮相:虚实同步布局2021台北电玩展以新形态亮相:虚实同步布置 
用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减用科技保护环境!AI可侦测亚马逊雨林生态中非法道路的增减
烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点「breakie」,「cakie」烘焙王!Google AI未烤先猜你的配方会变什么食物,更创造混种甜点「breakie 」,「cakie 」
她用数据战胜人性,主推疗法课程一年后用户翻七倍她用数据战胜人性,主推疗法课程一年后用户翻七倍
【有线硬塞】你知道银河系的历史,已被重新改写了吗?【有线硬塞】你知道银河系的历史,已被重新改写了吗?
2020年过的好吗?盘点脸书满城风雨的一年祖克柏放弃新年愿望!2020过的好吗?盘点脸书满城风雨的一年 

......

4、要素属性値を取得するためのScrapyXPathメソッド

Python Webクローラーは、Webページに表示されるコンテンツをクロールするだけでなく、Webページ要素(要素)の属性値を取得することもできます。これは、たとえば、画像のsrcソース属性値やhrefURLを取得することを意味します。このときのハイパーリンク等の属性値は、次の例のように、Scrapyフレームワークのxpath()メソッド(メソッド)の最後に「@attributename」を追加する必要があります。

进口沙皮 刮y的
类InsideSpider (scrapy 。蜘蛛): 
    名称= “内部” 
    allowed_domains = [ 'www.inside.com.tw' ] 
    start_urls = [ 'https://www.inside.com.tw/tag/ai' ] 
    def parse (self ,response ):
        标题=回应。xpath (
            “ // a [@ class ='js-auto_break_title'] / @ href” )。getall ()
        为标题在标题:
            打印(标题)

の結果

https://www.inside.com.tw/article/22257-Microsoft-Wants-to-Turn-You-In-a-Black-Mirror-Style-Chatbot-After-Death://www.inside.com.tw/article/22257-Microsoft-Wants-to-Turn-You-to-a-Black-Mirror-Style-Chatbot-After-Death
https://www.inside.com.tw/article/22234-arm-AI-explained://www.inside.com.tw/article/22234-arm-AI-explained
https://www.inside.com.tw/article/22254-2021-TGS://www.inside.com.tw/article/22254-2021-TGS
https://www.inside.com.tw/article/22208-artificial-intelligence-finds-hidden-roads-threatening-amazon-ecosystems://www.inside.com.tw/article/22208-artificial-intelligence-finds-hidden-roads-threatening-amazon-ecosystems
https://www.inside.com.tw/article/22196-google-ai-concocts-breakie-and-cakie-hybrid-baked-goods://www.inside.com.tw/article/22196-google-ai-concocts-breakie-and-cakie-hybrid-baked-goods
https://www.inside.com.tw/article/22222-sofasoda-growth-in-tech-2021//www.inside.com.tw/article/22222-sofasoda-growth-in-tech-2021
https://www.inside.com.tw/article/22194-The-Milky-Way-Gets-a-New-Origin-Story://www.inside.com.tw/article/22194-The-Milky-Way-Gets-a-New-Origin-Story
https://www.inside.com.tw/article/22057-Mark-Zuckerberg-and-fb-2020//www.inside.com.tw/article/22057-Mark-Zuckerberg-and-fb-2020

......

上記の例は、記事のタイトルのURLであるスタイルカテゴリ(クラス)「js-auto_break_title」のすべてのタグhref属性値をクロールすることです。

V.まとめ
この記事は、Scrapyフレームワークで要素を見つける別の方法を示しています

単一の要素値を取得するには、get()メソッド(メソッド)を
呼び出して複数の要素値取得し、getall()メソッド(メソッド)を呼び出し
てテキストコンテンツ取得し、「/ text()」キーワードを追加し
て属性取得します値を追加し、「@ attributename」キーワードを追加
します。ここで共有されているScrapyxpath ()メソッド(メソッド)と、記事[Scrapyチュートリアル4]のcss()メソッド(メソッド)を使用して練習できます。Scrapyフレームワークの要素メソッド、アイデアをクロールするScrapyフレームワークを使用してPython Webクローラーを開発したい友人は、必要なWebコンテンツをすぐに開始できると思います。

おすすめ

転載: blog.csdn.net/wlcs_6305/article/details/114476505