Я думаю, вам нужно объединить bs с селеном, так как некоторое содержимое загружается немного медленнее.Вы можете использовать bs, чтобы получить исходные ссылки, а затем использовать селен и ждать, чтобы убедиться, что контент на каждой странице загружен.Сначала нужно решить проблему с сертификатом.
Я не уверен, что это за сводка, поэтому я предоставляю все теги p.Это означает некоторую дублированную информацию.Вы можете уточнить это.
import requests
from bs4 import BeautifulSoup as bs
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 pandas as pd
baseUrl = 'https://engagements.ceres.org'
results = []
driver = webdriver.Chrome()
r = requests.get('https://engagements.ceres.org/?_ga=2.157917299.852607976.1552678391-697747477.1552678391', verify=False)
soup = bs(r.content, 'lxml')
items = [baseUrl + item['href'] for item in soup.select("[href*='ceres_engagementdetailpage?recID=']")]
for item in items:
driver.get(item)
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "p")))
title = driver.find_element_by_css_selector('.resolutionsTitle').text
organisation = driver.find_element_by_css_selector('#description p').text
year = driver.find_element_by_css_selector('#description p + p').text
aList = driver.find_elements_by_css_selector('.td2')
industry = aList[0].text
filedBy = aList[2].text
status = aList[5].text
summary = [item.text for item in driver.find_elements_by_css_selector('#description p')]
results.append([organization, industry, title, filedBy, status, year, summary])
df = pd.DataFrame(results, headers = ['Organization', 'Industry', 'Title', 'Filed By', 'Status', 'Year', 'Summary'])
print(results)