2017-04-02 11 views
0

Chromeの複数のタブでウェブページ内のリンクを開くpythonを使用してスクレーパーを開発しようとしています。Chromeを使用して複数のタブですべてのリンクを開くPythonスクレーパーを開発する

私は一緒に入れて管理しているコードは、私がそのサイト上で最も個々の投稿は「」(日中)を持っていることを考え出したので、私はリンクをクリックしようとしてい

import urllib2 
from datetime import timedelta, date 
import selenium.webdriver as webdriver 
import selenium.webdriver.support.ui as ui 
import time 

from selenium.webdriver.common.keys import Keys 

driver = webdriver.Chrome() 

i = driver.get("https://investmentinsightindia.wordpress.com/") 

driver.find_element_by_partial_link_text(',').click() 
driver.get("chrome://newtab/") 

ですそれにはテキストが含まれています。

私はそれを複数のサイトで動作させるようにしていますが、最終的にはXpathのhrefリファレンスのようなリンクにもっと汎用的なものを使用する必要があります。私はそれを設定するにはどうすればよい

- 1.ホームページ(URL)を開き 2.新しいタブで使用可能な最初のリンクを開きます 3.新しいタブで二利用可能なリンクを開きます4. オープンタブを葉......など

+0

一つをクリアすることはできますか? 2013年5月17日に投稿されたこのリンクをクリックしますか?コンマ '、'は現在あります – NarendraR

+0

私はページ内のすべての新しい投稿をクリックしたいと思います。日時をクリックすることは私が考えていた方法でした。理想的には、Webページ –

+0

にあるすべての投稿をクリックしたいのですが、私の更新された答えを見ることができ、Pythonで試してみてください。問題があればお知らせください。希望:これはあなたに役立ちます – NarendraR

答えて

0

'a'要素を見つけてループし、1つずつクリックすると、リンクとなる要素を見つけることができます。

あなたはこのような何かことを達成することができます:

for elem in driver.find_element_by_xpath('//a') : 
    elem.click() 
    driver.get("chrome://newtab/") 

これは新しいタブ一つずつ内のすべてのURLを開きます。

+0

私はそれを試してみました、私はそれを試してみました:-selenium.common.exceptions.StaleElementReferenceException:メッセージ:古い要素の参照:要素がページ文書に添付されていません 'より良いリンク? –

0

,を含む特定の投稿リンクを開く必要がある場合は、 Posted on May 17, 2013は、その後、次のXPathを使用して、リスト内の要素のすべての同じ種類を取得:

//a/span[contains(text(),',')] 

OR

すべてのポストのリンク

//h2/a 

を取得し、ためのループを反復処理するためのXPathの下に使用することができます。以下は、同じことを行うサンプルのJavaの例です。Pythonの構文に従って実装してください。

List <WebElement> allElement = driver.findElements(By.xpath("//a/span[contains(text(),',')]/parent::*")); // will get all anchor tag which having , and store in a list 

System.out.println(allElement.size()); 
for(WebElement element:allElement) 
{ 
    System.out.println(element.getAttribute("href")); 
    driver = new ChromeDriver(); 
    driver.get(element.getAttribute("href")); 
} 
関連する問題