gpt4 book ai didi

python - 从网页上的 anchor 标记访问详细信息

转载 作者:行者123 更新时间:2023-12-01 07:08:00 26 4
gpt4 key购买 nike

我正在抓取一个网页,我已成功使用 selenium 将表中的数据提取到 csv 文件中。我正在努力解决的是从表格每一行上存在的 anchor 标记中获取信息。

我尝试单击表格的所有 anchor 标记以从相应的 URL 获取信息,但在单击第一个 URL 后停止。它给出一条错误消息:消息:过时的元素引用:元素未附加到页面文档。我不确定这是否是解决这个问题的正确方法。这是我迄今为止尝试过的代码。如果代码格式不正确,我很抱歉我是 python 和 stackoverflow 的新手。

 import csv
import requests
import time
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

browser = webdriver.Chrome(executable_path=r"D:\jewel\chromedriver.exe")
browser.get(('https://e-sourcingni.bravosolution.co.uk/web/login.shtml'))
signInButton = browser.find_element_by_css_selector(".only")
signInButton.click()
time.sleep(5)
table = browser.find_element_by_css_selector(".list-table")

for a in browser.find_elements_by_css_selector(".detailLink"):
a.click()
time.sleep(2)
browser.execute_script("window.history.go(-1)")
time.sleep(2)

with open('output.csv', "w") as f:
writer = csv.writer(f)
writer.writerow(["S.No","Status","Organization","Project Title","First Publishing Date","Work Category","Listing Deadline"])
for row in table.find_elements_by_css_selector('tr'):
writer.writerow([d.text for d in row.find_elements_by_css_selector('td')])


browser.close()

我需要的是从具有类detailLink的标签的href中获取数据。我无法找到适当的方法来执行此操作。

最佳答案

我使用普通的 for 循环来迭代表,而不是 for every 循环。试试这个,让我知道效果如何。

import csv
import time
from selenium import webdriver

browser = webdriver.Chrome('/usr/local/bin/chromedriver') # Optional argument, if not specified will search path.
browser.implicitly_wait(5)

browser.execute_script("window.open('about:blank','tab1');")
browser.switch_to.window("tab1")
browser.get(('https://e-sourcingni.bravosolution.co.uk/web/login.shtml'))
signInButton = browser.find_element_by_css_selector(".only")
signInButton.click()
time.sleep(5)
table = browser.find_element_by_css_selector(".list-table")
links=browser.find_elements_by_css_selector(".detailLink")
for i in range(len(links)):
links=browser.find_elements_by_css_selector(".detailLink")
links[i].click()
time.sleep(2)
browser.execute_script("window.history.go(-1)")
time.sleep(2)

with open('output.csv', "w") as f:
writer = csv.writer(f)
writer.writerow(["S.No","Status","Organization","Project Title","First Publishing Date","Work Category","Listing Deadline"])
table=browser.find_elements_by_xpath("//table[@class='list-table']//tr")
for row in range(len(table)):
x=[]
for d in browser.find_elements_by_xpath("//table[@class='list-table']//tr["+str(row)+"]//td"):
x.append(d.text.encode('utf-8'))
writer.writerow(x)


browser.close()

关于python - 从网页上的 anchor 标记访问详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com