硒python变得怪异

时间:2017-12-08 01:05:02

标签: python selenium web-scraping

此代码旨在刮取谷歌翻译,我使用selenium废弃给定单词的每个可能的翻译。

以下是代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="https://www.test.com/" />
<title>LCPayment</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">LCPayment</td></tr>
</thead><tbody>
<tr>
    <td>open</td>
    <td>/all-access/subscription/payment/</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=AA_LC_TRIAL_MONTHLY</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=first_name</td>
    <td>test</td>
</tr>
<tr>
    <td>type</td>
    <td>id=last_name</td>
    <td>testing</td>
</tr>
<tr>
    <td>type</td>
    <td>id=address1</td>
    <td>5643 street</td>
</tr>
<tr>
    <td>type</td>
    <td>id=city</td>
    <td>los angeles</td>
</tr>
<tr>
    <td>select</td>
    <td>id=state</td>
    <td>label=CO</td>
</tr>
<tr>
    <td>type</td>
    <td>id=postal_code</td>
    <td>90023</td>
</tr>
<tr> \\this  is where the error happens. when I run selectFrame an error appears "[error] Element recurlyHostedField:number not found"
    <td>selectFrame</td>
    **<td>recurlyHostedField:number</td>**
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=recurly-hosted-field-input</td>
    <td>4111 1111 1111 1111</td>
</tr>
</tbody></table>
</body>
</html>

事情就是刮板只为第一个单词完成工作。

1 个答案:

答案 0 :(得分:0)

如果我使用正确的缩进并添加time.sleep(1),则代码适用于我,因此浏览器有时间加载页面。如果我不使用time.sleep(1),那么它找不到元素,我会收到错误消息。

from selenium import webdriver
import time

driver = webdriver.Chrome("E:\Tutorial\Driver\chromedriver.exe")

words = ['girl', 'cat', 'dog', 'bird', 'man']
for word in words:
    driver.get("https://translate.google.com.eg/?hl=en&tab=wT#en/fr/" + word)
    time.sleep(1)
    try:
        translations = driver.find_elements_by_class_name('gt-baf-word-clickable')

        for text in translations:
            print(text.text)
    except Exception as ex:
        print(ex)

在Linux Mint 18 / Python 3.6.2 / Selenium 3.6.0上测试