【问题标题】:selenium python get weird硒蟒变得奇怪
【发布时间】:2017-12-08 01:05:01
【问题描述】:

这段代码是用来抓取谷歌翻译的,我使用 selenium 来抓取给定单词的所有可能的翻译。

代码如下:

from selenium import webdriver

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)

translations = driver.find_elements_by_class_name('gt-baf-word-clickable')

for text in translations:
    print(text.text)

问题是 scraper 只为第一个单词做这项工作。

【问题讨论】:

  • 你有错误的缩进 - translations 和第二个 for 不在第一个 for 内 - 所以它只执行一个单词。
  • 在控制台/终端中运行时是否出现错误?始终将完整的错误消息(Traceback)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
  • @furas 没有错误

标签: python selenium web-scraping


【解决方案1】:

如果我使用正确的缩进并添加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 上测试

【讨论】:

  • 顺便说一句:selenium 有自己的方法来等待页面被读取以获取数据,但我从不记得它的全名 - wait 的东西。
猜你喜欢
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 2021-06-28
  • 2020-07-02
  • 1970-01-01
  • 2011-11-05
相关资源
最近更新 更多