Closed ylxwyj closed 4 months ago
btw,我用Python写过如下代码,在Pycharm中运行,是可以实现上述操作的。
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 from bs4 import BeautifulSoup import csv import time
driver = webdriver.Chrome()
driver.get("https://efdsearch.senate.gov/search/")
try:
checkbox = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "agree_statement"))
)
checkbox.click()
# 等待 Senator 复选框可点击并点击
senator_checkbox = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "input.senator_filer"))
)
senator_checkbox.click()
# 等待 Periodic Transactions 复选框可点击并点击
ptr_checkbox = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//input[@id='reportTypes' and @value='11']"))
)
ptr_checkbox.click()
# 等待'Search Reports'按钮可点击并点击
search_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))
)
search_button.click()
# 等待搜索结果出现
results_table = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "searchResultsTable"))
)
# print(results_table)
# 解析搜索结果
soup = BeautifulSoup(driver.page_source, 'html.parser')
table = soup.find('table', {'id': 'searchResultsTable'})
data = []
rows = table.find_all('tr')
for row in rows[1:]: # 跳过表头行
cols = row.find_all('td')
report = {
'last_name': cols[0].text.strip(),
'first_name': cols[1].text.strip(),
'report_type': cols[2].text.strip(),
'date_received': cols[3].text.strip(),
'report_year': cols[4].text.strip(),
'detail_link': cols[5].find('a')['href']
}
data.append(report)
# 将数据写入CSV文件
with open('senate_financial_reports.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print(f"Successfully scraped {len(data)} reports.")
except Exception as e: print(f"An error occurred: {str(e)}")
finally: driver.quit()
政府网站不予答疑,问题关闭。
你好。
我试图从 https://efdsearch.senate.gov/ 爬取参议员的股票持仓数据;
用Chrome浏览器,在点击 Search 按钮后,可以看到搜索结果,如下图:
但是,如果用 EasySpider,无论选择纯净浏览器,还是带用户信息的浏览器,都无法正常显示搜索结果,如下图:
这是我的第一次尝试,软件使用不熟练。具体的任务设置如下图:
请问,出现上述问题的原因是什么?该如何解决?