【发布时间】:2021-12-31 10:51:21
【问题描述】:
目前我正在创建一个 python 脚本,该脚本继续 https://www.mwcbarcelona.com/exhibitors 并单击每个参展商并返回同一页面,然后单击下一个参展商。 我写了一段代码:
from bs4 import BeautifulSoup
import requests
import csv
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome("chromedriver.exe")
driver.get('https://www.mwcbarcelona.com/exhibitors')
td_list = driver.find_elements_by_css_selector("tr[class='flex px-4 cursor-pointer hover:bg-gray-100 sm:table-row sm:text-gray-700 sm:font-medium']")
for desc in td_list:
print(desc.text)
desc.click()
time.sleep(3)
driver.back()
time.sleep(3)
当我运行我的代码时,我只能去第一个参展商,然后它给我这个错误:
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
谁能告诉我这里出了什么问题。
【问题讨论】:
-
不确定是什么原因造成的,但动态网页也有同样的问题。我建议为“desc.click()”生成的 url 打开一个新的 Chrome 实例
-
@YannisP。你能提供一些信息吗?
-
您从网页获取的
tr元素应该在某处有a元素。获取这些 a 的href并在每个处打开一个新的webdriver.Chrome。然后做一些工作(点击后我看不到你需要做什么)并关闭新驱动程序。 -
@YannisP。没有“a”标签。我提供了你的链接。
标签: python selenium selenium-webdriver web-scraping