Scrapyでクリックしてデータを取得する方法

ルイス・エドゥアルド・デルフィン・アレス・デ・パ

そのため、Scrapyを使用してドロップダウンリストで選択した内容に応じて、ページからより多くのデータを取得しようとしています。

訪問:http//grace.itam.mx/EDSUP/BWZKSENP.P_Horarios1?s = 1416

以下のコードでは、最初にドロップダウンリストのすべての要素を取得し、正常に機能しています。

ただし、要素を選択し、サブビットをクリックしてデータテーブルのある新しいページに移動した後の情報も取得したいと思います。とにかくそれをすることはありますか?

# run this file as
# scrapy runspider scrappy-itam.py -t csv -o s4-out.csv
from scrapy.spiders import Spider
from collections import OrderedDict
class MySpider(Spider):
    name = 's4'
    allowed_domains = ['grace.itam.mx']
    start_urls = [ "http://grace.itam.mx/EDSUP/BWZKSENP.P_Horarios1?s=1416"]

    def parse(self, response):
        items = []
        for cour in response.xpath("//div[@class='pagebodydiv']/form/select/option/text()"):
             item = OrderedDict()
             info=cour.extract()
             course=info.split('-')
             item['Department']=course[0]
             item['Course']=course[2]
             items.append(item)
        return items

編集:ここでは、FormRequestを使用して新しいページを解析しました。

lass MySpider(Spider):
name = 's4'
allowed_domains = ['grace.itam.mx']
start_urls = [ "http://grace.itam.mx/EDSUP/BWZKSENP.P_Horarios1?s=1416"]

def parse(self, response):
    for c in response.xpath("//div[@class='pagebodydiv']/form/select/option/text()"):
         item = OrderedDict()
         info=c.extract()
         yield scrapy.FormRequest.from_response(response,formdata={'TXT_MATERIA':info},callback=self.after_button)


def after_button(self,response):
    yield response.xpath("//div[3]/table[1]/tbody/tr[1]/td[1]/b/text()").extract()
ルーカス・ウィロック

使用Scrapy FormRequest.from_response選択したい要素から値をパラメータとして使用しました。このようにして、スパイダーの別のメソッドで他のページのコンテンツを解析できます。

編集1:

あなたFormRequestには間違いがあります次のように変更します。

scrapy.FormRequest.from_response(response,formdata={'txt_materia':info, 's' : '1416'})

s : 1416パラメータの追加は必須ではないと思いますが、txt_materia小文字にする必要があります。上記のコードとして使用した場合、応答は正しかった。

あなたのafter_button方法で、私は2つの小さな間違いを見つけました:

  1. xpathをオンにしないでくださいtbodyそれらを回避するために相対パスを使用してください!
  2. エラーメッセージに記載されているように、そのxpathからの結果をSpiderから単純に生成することはできません。Request、BaseItem、dict、またはNoneを返す必要があります。

これは私が書いたコードですafter_button

def after_button(self,response):
    yield { "text" : response.xpath("//div[3]/table[1]//tr[1]/td[1]/b/text()").extract_first() }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Reactフックを使用してボタンクリックでデータを取得する方法

分類Dev

Linqクエリを使用してデータを取得する方法

分類Dev

角括弧クエリを使用してphpcurlでデータを取得する方法は?

分類Dev

Scrapy Xpathを使用してスクリプトタグからデータを取得し、CSVとして使用する

分類Dev

ボタンをクリックして追加のデータを送信し、次々に取得する方法

分類Dev

Appiumでリストデータを取得して保存する方法と特定の検索済みレコードをクリックする方法

分類Dev

JS-クリックしたaタグのデータ属性を取得して他のページで使用する

分類Dev

静的データでフィールドを事前入力し、angular2を使用してクリック時に空のセクションを取得する方法

分類Dev

追加ボタンをクリックしてモーダルでデータを取得する

分類Dev

動的データを使用して動的ボタンを作成し、ボタンのクリックで動的な値を取得する方法

分類Dev

データを取得していないリンクをたどるScrapy

分類Dev

リンクテーブルを介してデータを取得し、行を列にピボットする方法

分類Dev

jqueryを使用して追加テーブルデータを取得し、クリックされたテーブル行データを取得する方法

分類Dev

capybara "find"を使用してタイトルインデックスでデータ要素を取得する方法は?

分類Dev

ボタンクリックajaxで新しいデータを取得する

分類Dev

WPF-データグリッドで選択した行インデックスを取得する方法は?

分類Dev

ディクショナリからデータセット名の値を取得して操作する方法

分類Dev

Scrapy&Selenium:XPATHをループしてクリックを実行する方法

分類Dev

PHPでワンクリックでデータを保存してフォームを印刷する方法は?

分類Dev

ハックニーを使用してエリクサーでボディパラメータを送信する方法

分類Dev

AngularJSを使用してボタンクリックでデータを投稿する方法

分類Dev

KendoMvcを使用してボタンクリックでデータをバインドする方法

分類Dev

マングースで1つのクエリでデータを取得してカウントする方法

分類Dev

Firebase Firestoreを使用してクエリデータを取得する方法

分類Dev

jsonデータを使用してAPIPOSTリクエストを取得する方法

分類Dev

symfonyでクリックして要素のIDを取得する方法

分類Dev

変数を使用してMySqlクエリからデータセットを取得する方法

分類Dev

ScrapyでCSSセレクターを使用してhrefを取得する

分類Dev

Facebook API2.1データ出力をクエリして取得する方法

Related 関連記事

  1. 1

    Reactフックを使用してボタンクリックでデータを取得する方法

  2. 2

    Linqクエリを使用してデータを取得する方法

  3. 3

    角括弧クエリを使用してphpcurlでデータを取得する方法は?

  4. 4

    Scrapy Xpathを使用してスクリプトタグからデータを取得し、CSVとして使用する

  5. 5

    ボタンをクリックして追加のデータを送信し、次々に取得する方法

  6. 6

    Appiumでリストデータを取得して保存する方法と特定の検索済みレコードをクリックする方法

  7. 7

    JS-クリックしたaタグのデータ属性を取得して他のページで使用する

  8. 8

    静的データでフィールドを事前入力し、angular2を使用してクリック時に空のセクションを取得する方法

  9. 9

    追加ボタンをクリックしてモーダルでデータを取得する

  10. 10

    動的データを使用して動的ボタンを作成し、ボタンのクリックで動的な値を取得する方法

  11. 11

    データを取得していないリンクをたどるScrapy

  12. 12

    リンクテーブルを介してデータを取得し、行を列にピボットする方法

  13. 13

    jqueryを使用して追加テーブルデータを取得し、クリックされたテーブル行データを取得する方法

  14. 14

    capybara "find"を使用してタイトルインデックスでデータ要素を取得する方法は?

  15. 15

    ボタンクリックajaxで新しいデータを取得する

  16. 16

    WPF-データグリッドで選択した行インデックスを取得する方法は?

  17. 17

    ディクショナリからデータセット名の値を取得して操作する方法

  18. 18

    Scrapy&Selenium:XPATHをループしてクリックを実行する方法

  19. 19

    PHPでワンクリックでデータを保存してフォームを印刷する方法は?

  20. 20

    ハックニーを使用してエリクサーでボディパラメータを送信する方法

  21. 21

    AngularJSを使用してボタンクリックでデータを投稿する方法

  22. 22

    KendoMvcを使用してボタンクリックでデータをバインドする方法

  23. 23

    マングースで1つのクエリでデータを取得してカウントする方法

  24. 24

    Firebase Firestoreを使用してクエリデータを取得する方法

  25. 25

    jsonデータを使用してAPIPOSTリクエストを取得する方法

  26. 26

    symfonyでクリックして要素のIDを取得する方法

  27. 27

    変数を使用してMySqlクエリからデータセットを取得する方法

  28. 28

    ScrapyでCSSセレクターを使用してhrefを取得する

  29. 29

    Facebook API2.1データ出力をクエリして取得する方法

ホットタグ

アーカイブ