【问题标题】:python selenium web scrapingpython selenium 网页抓取
【发布时间】:2018-10-27 08:01:51
【问题描述】:

我是 python 的新手,但每当我运行此代码时,我都会收到以下错误“消息:无法定位元素:(//div[@class= 'contact-us'])”即使当我检查我可以看到 div 的网站。 这是我的代码:

from pandas.io.html import read_html
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://einstein.exchange/contact-us')
BTC = driver.find_element_by_xpath("(//div[@class = 'contact-us'])")
BTC_html = BTC.get_attribute('innerHTML')
print (BTC_html)
driver.close()
with open("OutputEinstein.txt", "w") as text_file:
    print(format(BTC_html), file=text_file)

我已经为另外两个网站运行了类似的代码,它们运行良好。所以我不知道为什么这个网站不工作。

【问题讨论】:

  • 尝试添加等待 -> element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "(//div[@class= 'contact-us'])" )))

标签: python-3.x selenium-webdriver web-scraping


【解决方案1】:

当我尝试访问此页面时,我收到了 Google Captcha 验证。这也发生在你身上吗?如果没有,下面的代码就足够了:

from pandas.io.html import read_html
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get('https://einstein.exchange/contact-us')

WebDriverWait(driver, 20).until(
 EC.presence_of_element_located((By.XPATH, """(//div[@class = 'contact-us'])""")))

BTC = driver.find_element_by_xpath("(//div[@class = 'contact-us'])")
BTC_html = BTC.get_attribute('innerHTML')
print (BTC_html)
driver.close()
with open("OutputEinstein.txt", "w") as text_file:
    print(format(BTC_html), file=text_file)

如果这有帮助,请告诉我。

【讨论】:

  • 不,我没有获得谷歌验证码验证。我收到以下错误“返回 codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u25b2' 在位置 556:字符映射到 "
  • 好的,我让它运行了,我只是选择了一个选择较小的类,而不是整个页面。谢谢大家。
猜你喜欢
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 2013-11-13
  • 2020-11-23
  • 2019-06-30
相关资源
最近更新 更多