我需要通过选择start_date
和end_date
从link抓取数据。选择日期后,表中将有几个链接。单击链接后,将弹出一个弹出框,我将从该弹出框中抓取数据。
我的代码能够从弹出框中抓取数据,但是对第一个链接执行此操作后,它会遇到错误:
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=84.0.4147.125)
错误指向第41行
element.click()
到目前为止,这是我的代码:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import os
import sys
start_date,end_date = '1960-01-01','1970-01-01'
driver = webdriver.Chrome()
driver.get('http://rni.nic.in/registerdtitle_search/registeredtitle_ser.aspx')
driver.maximize_window()
date_button = driver.find_element_by_xpath('//*[@id="main_TabContainer2_tbpnljobdetails_Label41"]')
date_button.click()
start_dater = driver.find_element_by_xpath('//*[@id="main_TabContainer2_tbpnljobdetails_txt_fromdate"]').send_keys(start_date)
end_dater = driver.find_element_by_xpath('//*[@id="main_TabContainer2_tbpnljobdetails_txt_todate"]').send_keys(end_date)
search_button = driver.find_element_by_xpath('//*[@id="main_TabContainer2_tbpnljobdetails_btn_search3"]')
search_button.click()
table = driver.find_element_by_xpath('/html/body/form/div[4]/div[2]/div[2]/div/div[2]/div[3]/div/div/div[3]/div/table')
titles = ['TITLE','REGN NO','LANGUAGE','PERIODICITY','STATE','PUBLICATION DISTRICT','PRICE','PUBLISHER NAME','PUBLISHER ADDRESS','PRINTER NAME','PRINTER ADDRESS','EDITOR NAME','EDITOR ADDRESS','PRINTING PRESS NAME','PRINTING PRESS ADDRESS','OWNER NAME','PLACE OF PUBLICATION','PUBLISHER EMAIL ID','PUBLISHER MOBILE NO','OWNER EMAIL ID','OWNER MOBILE NO','OWNER LANDLINE NO']
sleep(4)
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
filename = start_date + ' to ' + end_date + '.csv'
with open(filename,'w') as f:
writer = csv.writer(f)
writer.writerow(titles)
for element in driver.find_elements_by_class_name('popup_registrationd'):
dic = {key:'' for key in titles}
element.click()
popup = driver.find_element_by_xpath('//*[@id="div1"]')
for content in popup.find_elements_by_css_selector('div'):
contents = content.find_elements_by_css_selector('span')
data = [c.text for c in contents]
for key,value in zip(data[0::2],data[1::2]):
dic[key] = value
writer.writerow(list(dic.values()))
print(list(dic.values()))
closer = driver.find_element_by_xpath('//*[@id="main_btnClose"]')
closer.click()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。