python - 使用 Selenium+python 从链接列表中提取 HTML 代码
问题描述
我正在尝试从链接列表中获取多个页面源。我的想法是使用 webdriver 打开链接,将页面源保存在变量中,然后返回继续下一个链接。但由于某种原因,python 告诉我一个元素没有附加到页面文档。有什么解决办法吗?提前致谢!
browserFut = webdriver.Chrome(PATH)
browserFut.get(link)
page_sources = []
links = browserFut.find_element_by_xpath('//div[@class="dml-page-loader dml-page-loader--pb"]').find_elements_by_tag_name('a')
for link in links:
link.click()
page_sources += [browserFut.page_source]
browserFut.back()
time.sleep(1)
解决方案
for
我们需要在循环中再次分配链接。尝试这样的事情。
length = len(browserFut.find_element_by_xpath('//div[@class="dml-page-loader dml-page-loader--pb"]').find_elements_by_tag_name('a'))
for i in range(length):
links = browserFut.find_element_by_xpath('//div[@class="dml-page-loader dml-page-loader--pb"]').find_elements_by_tag_name('a')
links[i].click()
page_sources += [browserFut.page_source]
browserFut.back()
time.sleep(1)
如果链接在新选项卡中打开,则单击后:
length = len(browserFut.find_element_by_xpath('//div[@class="dml-page-loader dml-page-loader--pb"]').find_elements_by_tag_name('a'))
for i in range(length):
links = browserFut.find_element_by_xpath('//div[@class="dml-page-loader dml-page-loader--pb"]').find_elements_by_tag_name('a')
links[i].click()
handles = driver.window_handles
browserFut.switch_to.window((handles[1]))
page_sources += [browserFut.page_source]
browserFut.close()
browserFut.switch_to.window(handles[0])
time.sleep(1)
推荐阅读
- c# - How do I pick a specific word out of a string with certain criteria?
- r - How can to combine odds ratios and the confidence intervals
- mongodb - Golang mongodb 在primitive.E中聚合了太多的值
- vue.js - 如何将 Vue.prototype.$something 存储在单独的文件中?
- keras - 将 keras 模型架构转换为 Pytorch
- mysql - mysql 到 mariadb 导入不起作用(语法错误)
- r - 使用结束日期和开始日期逐年展开行
- wordpress - 我从 themeforest 购买了 wordpress 主题,但无法导入演示内容?
- android - 在 android 中使用 glide 从 POST URL 加载图像
- javascript - J 查询事件处理程序以在选择日期选择器时将结束日期更改为与开始时间相同