我目前正在进行一个研究项目,我们试图从巴西Hemeroteca数据库中收集保存的图像文件。在使用HTML表单使用C/C++之前,我已经在PHP页面上进行了Web删除,但是由于这是一个共享脚本,所以我需要切换到Python,这样组中的每个人都可以使用这个工具。在
我要刮的页面是:http://bndigital.bn.gov.br/hemeroteca-digital/
有三种形式,第一种是报纸/杂志。选择此选项后,将填充可用时间,最后一个字段是搜索项。我在这里检查了HTML页面,它们的三个id分别是:“periodicmb1_Input”、“periodicmb1_Input”和“PesquisaTxt1”。在
一些关于这个主题的google搜索让我找到了Selenium包,我把这个示例代码组合在一起,试图阅读这个页面:
import webbrowser
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
print("Begin...")
browser = webdriver.Chrome()
url = "http://bndigital.bn.gov.br/hemeroteca-digital/"
browser.get(url)
print("Waiting to load page... (Delay 3 seconds)")
time.sleep(3)
print("Searching for elements")
journal = browser.find_element_by_id("PeriodicoCmb1_Input")
timeRange = browser.find_element_by_id("PeriodoCmb1_Input")
searchTerm = browser.find_element_by_id("PesquisaTxt1")
print(journal)
print("Set fields, delay 3 seconds between input")
search_journal = "Relatorios dos Presidentes dos Estados Brasileiros (BA)"
search_timeRange = "1890 - 1899"
search_text = "Milho"
journal.send_keys(search_journal)
time.sleep(3)
timeRange.send_keys(search_timeRange)
time.sleep(3)
searchTerm.send_keys(search_text)
print("Perform search")
submitButton = button.find_element_by_id("PesquisarBtn1_input")
submitButton.click()
脚本运行到print(journal)语句,在该语句中抛出错误,说明找不到元素。在
有人能快速浏览一下有问题的页面,确保我正确地理解了这个脚本的基本前提,或者给我指出一些例子来帮助我解决这个问题吗?在
谢谢!在
您要查找的DOM元素位于
iframe
。所以在使用find_element_by_id
API之前,您应该切换到iframe上下文。在下面是如何切换到
iframe
上下文的代码:下面是一个描述切换到
iframe
上下文的link。在相关问题 更多 >
编程相关推荐