2016-09-10 13 views
0

私は、WebでPythonで擦って練習しています。アイテムを投票するサイトのボタンを押したいと思います。 ここでは、コードボタンをクリックしてPythonで投票する方法

<html> 
<head></head> 
<body role="document"> 
<div id="static page" class="container-fluid"> 
<div id="page" class="row"></div> 
<div id="faucets-list"> 
<tbody> 
<tr class=""></tr> 
<tr class=""></tr> 
<tr class=""></tr> 
<tr class=""></tr> 
# an infinite number of nodes, until there's mine 
<tr class=""> 
<td class="vote-col"> 
<div class="vote-box"> 
<div class="vote-links"> 
<a class="vote-link up" data-original-title="I like this faucet" href="#" data-faucet"39274" data-vote"up" data-toggle"tooltip" data-placement="top" title=""></a> 

であり、これは最後の部分を、それが、私は手動でボタンをクリックしたとき:

<a data-original-title="I&nbsp;like&nbsp;this&nbsp;faucet" href="#" class="vote-link up voted" data-faucet="39274" data-vote="up" data-toggle="tooltip" data-placement="top" title=""></a> 

は、私はPythonでスクリプトでそれをシミュレートすることができますか?私はまだ初心者で、最近はPythonを学び始めました。 P.S:サイトはhttpsです。そして、私はHTTPを使用してhttpsでリダイレクトするよう強制します。私はセレンをしようとしている

--UDPATE-- ...

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://faucetbox.com/en/list/BTC") 
element = driver.find_element_by_css_selector(".vote-link.up") 
element_attribute_value = element.get_attribute("data-faucet") 
if element_attribute_value == "39274": 
    print ("Value: {0}".format(element_attribute_value)) 
driver.quit() 

しかし、それぞれの投票のために複数の番号があるので、それは常に最初のものを示しています...それは決してそのプリントを印刷していない

...どうすれば私の行を選択することができますか?

+0

[ウェブブラウザで自動的にボタンをクリックする](http://stackoverflow.com/questions/5693221/clicking-a-button-automatically-in-a-web-browser-with-python ) – Tempux

答えて

-1

Seleniumをチェックしてください。これはPythonのモジュールで、上で述べたようなタスクを自動化することができます。

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://faucetbox.com/en/list/BTC") 
elements = driver.find_elements_by_css_selector(".vote-link.up") 
for element in elements: 
    element_attribute_value = element.get_attribute("data-faucet") 
    if element_attribute_value == "39274": 
     print("Value: {0}".format(element_attribute_value)) 
     element.click() 
     break 
driver.quit() 

何をやったと私がやったとの違いは、私が代わりにfind_element_by_css_selectorfind_elements_by_css_selectorメソッドを使用していることである。このような何かを試してみてください。前者はcssセレクタと一致するすべての要素のリストを返しますが、後者は最初に一致する要素のみを返します。次に、そのリストを単純な0​​ループで反復し、同じチェックを使用しました。私はループ内の要素もクリックしました。お役に立てれば!

関連する問題