python - 从网站上的表单中抓取动态数据
问题描述
我正在尝试从网站上的表单中抓取动态选项列表。该网站的工作方式是,当您在查询框中输入一些数据时,它会将它们作为关键字并从其自己的数据库中搜索并相应地生成结果。
我正在尝试通过使用 selenium 抓取来提取整个完整列表。
最初在检查元素部分,我有:
这就是我们在表单中写一些关键字时发生的变化:
for i in range(1,100):
try:
depart.append(browser.find_elements_by_class_name("accessabilityBar textIndent")[i].text)
except Exception as e:
break
print(depart)
所以,这是我得到的输出:[u'']
有人可以帮我解决这个问题吗?
解决方案
browser.find_elements_by_class_name("accessabilityBar textIndent")
返回一个异常,因为不允许复合类名,但异常被except
块捕获。
请尝试以下方法:
depart = [item.text for item in browser.find_elements_by_css_selector("span.accessabilityBar.textIndent")]
如果您需要等到生成文本,您可能需要使用
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath('//iframe[@src="s.effectivemeasure.net/html/frame_2.3.7.html"]')))
depart = [item.text for item in WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//span[@class='accessabilityBar textIndent' and normalize-space()]")))]
推荐阅读
- c++ - 检测指针目标:静态内存还是动态内存?
- c - 如何使用 strtol 从用户输入中提取数字
- python - 在 Python 中解析日期时混淆日期和月份
- python-3.x - 我不知道如何编写一个猜词程序的一部分
- sabre - SABRE RedWeb 安装/入门
- spring - @Transactional 注解不回滚
- mysql - 创建具有主键和不同列值的视图会产生奇怪的结果
- typescript - vue-class-component + typescript:如何在导入的函数中使用组件的类作为“this”的类型?
- python - Discord py - 我怎样才能停止我的调度程序两次执行任务?
- excel - Excel VBA 代码适用于 Windows 10,但不适用于运行 macOS Catalina 10.15.7 和 Excel for Mac 版本 16.43 的 MacBook Pro