硒基本打开一个网址

时间:2015-10-14 08:54:42

标签: python selenium selenium-webdriver

我刚开始服用硒。

我制作了一个简单的python脚本,应该打开一个网址并在那里打印产品的价格。

这是:

from selenium import webdriver
import time
driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs')
url = 'http://www.stance.com/shop/product/paint-trap'
print "Driver Made"
driver.get(url)
print "URL got"
price = driver.find_element_by_xpath('//*[@id="h1--title-price"]/span[2]').text
print price
driver.close()

但是,它只是打印:" Driver Made"并且从不打印" URL得到"也不是价格。

似乎卡在了driver.get(url)上,但我不知道为什么。

我想知道如何打印价格以及如何阻止driver.get(url)永远运行。

如果我用ctrl C打断它,我得到:

Driver Made
^CTraceback (most recent call last):
  File "test.py", line 6, in <module>
    driver.get(url)
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 213, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 199, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 395, in execute
    return self._request(command_info[0], url, body=data)
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 463, in _request
    resp = opener.open(request, timeout=self._timeout)
  File "/usr/local/lib/python2.7/urllib2.py", line 404, in open
    response = self._open(req, data)
  File "/usr/local/lib/python2.7/urllib2.py", line 422, in _open
    '_open', req)
  File "/usr/local/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python2.7/urllib2.py", line 1214, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/local/lib/python2.7/urllib2.py", line 1187, in do_open
    r = h.getresponse(buffering=True)
  File "/usr/local/lib/python2.7/httplib.py", line 1045, in getresponse
    response.begin()
  File "/usr/local/lib/python2.7/httplib.py", line 409, in begin
    version, status, reason = self._read_status()
  File "/usr/local/lib/python2.7/httplib.py", line 365, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/local/lib/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
KeyboardInterrupt

1 个答案:

答案 0 :(得分:1)

工作代码打印 - (在Windows中)。

Driver Made
URL got
$14.00

工作代码如下

from selenium import webdriver
import time
driver = webdriver.PhantomJS(executable_path=r"C:\Users\Desktop\phantomjs.exe")

driver.set_window_size(1120, 550)
url = 'http://www.stance.com/shop/product/paint-trap'
print "Driver Made"
driver.get(url)
print "URL got"
driver.implicitly_wait(5)
price = driver.find_elements_by_xpath("(//*[@id='h1--title-price']/span)[2]")
for i in price:
    print i.text
driver.close()

<强> N.B。确保幻像可执行路径和selenium库在其他组件中是正确的。