通过在约会网站上打开用户的约会资料来练习通过硒进行网页抓取。我需要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
硒不保留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)