1

私はしばらく Beautiful Soup で遊んでいますが、javascript の制限を除いてうまく機能します。ツールボックスのギャップを埋めるために Selenium を使用しようとしています。私がスクレイピングしようとしているサイトはhttp://www.5dimes.eu/livelines/livelines.aspxです

**私はWindowsを使用していて、QTWebKitを機能させることができないことを言及する必要があります。これもオプションであると言われています。

このサイトでは、テーブルをプレビューするためにチェックボックスをクリックする必要があります。テーブルをプレビューすることができたら、私は問題ないと思っていましたが、残念ながらそうではありませんでした。

使ってみた

driver = webdriver.Chrome()
page = driver.get("http://www.5dimes.eu/livelines/livelines.aspx")
driver.find_element_by_xpath("//*[@id='l_26']").click()
html_source = driver.page_source

実際にリンクをクリックするページを取得できましたが、html_sourceにはテーブルデータがありませんでした。

テストでいくつかの問題が発生しました。

  1. xpath id は、投稿されたものの数に基づいて毎日変化します。ある日は 26 で、次の日は 27 などでした。クラスまたはテキスト名を介してこのチェックボックスに移動する別の方法はありますか?

  2. テーブルが表示されたら、どうすればこのデータを抽出できますか?

クラス情報で「隠し」属性に言及していることに気付きました

<div id="divLoading" style="width: 100%; text-align: center;" class="Hidden">
        <img id="imgLoading" src="images/scanning.gif">
    </div>

それが問題の原因でしょうか?どんな助けでも大歓迎です

4

1 に答える 1

1

このようなものを試してください

   L= find_elements(By.XPATH,"//div[@id='divl_25']/table/tbody/tr/td[1]");

WebElementsに同じロケーターが含まれているリストが返されます(つまり、テーブルコンテンツの最初のtd)

2番目のtdコンテンツを取得するには、tdインデックスを2に変更する必要があります。

   L= find_elements(By.XPATH,"//div[@id='divl_25']/table/tbody/tr/td[2]");

上記の行は、すべての行のすべての2番目のtdを示します。

WebElementsのリストを取得した後、そのリストをループで繰り返し、各要素からテキストを取得します。このようにして、テーブルデータ全体を取得できます。

for ele in L:
        print ele.text;

これがお役に立てば幸いです。

PS:python、selenium-pythonバインディングについてはよくわかりません。

于 2013-01-29T06:51:13.237 に答える