查找/搜索链接并通过python / selenium将它们保存到列表变量时遇到麻烦

问题描述 投票:0回答:1

通过在约会网站上打开用户的约会资料来练习通过硒进行网页抓取。我需要selenium来为页面上的每个配置文件保存一个href链接,但是不幸的是,它仅将第一个配置文件保存在列表中,而不是创建一个保存了所有链接的列表变量。所有配置文件都以相同的两个div类/样式开头,即“ member-thumbnail”和“ position:absolute”。感谢您提供的任何帮助。

这是html代码:

<div class="member-thumbnail">
    <div style="position: absolute;">
        <a href="/Member/Details/LvL-Up">
        <img src="//storage.com/imgcdn/m/t/502b24cb-3f75-49a1-a61a-ae80e18d86a0" class="presenceLine online">
        </a>
    </div>    
</div>

这是我的代码:

link_list = browser.find_elements_by_css_selector('.member-thumbnail a')
for element in linklist:
    browser.get(element.get_attribute('href'))

这是我收到的错误消息:

Traceback (most recent call last):
  File "C:\Users\artur\Desktop\feabie.py", line 31, in <module>
    browser.get(element.get_attribute('href'))
  File "C:\Users\artur\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webelement.py", line 139, in get_attribute
    attributeValue = self.parent.execute_script(
  File "C:\Users\artur\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 634, in execute_script
    return self.execute(command, {
  File "C:\Users\artur\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\artur\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
python
1个回答
0
投票

硒不保留urls,而是WebElements,它们是当前页面上元素的“参考”。如果使用get()加载新页面,则它将丢失这些引用。

您必须将所有链接作为字符串使用,然后才能与get()一起使用

link_list = browser.find_elements_by_css_selector('.member-thumbnail a')

all_links = []

for element in link_list:
    all_links.append(element.get_attribute('href'))

for url in all_links:
    browser.get(url)
© www.soinside.com 2019 - 2024. All rights reserved.