Поскольку вы не предоставили какую-либо форму того, что содержится в вашей переменной contents
, я предполагаю, что это список строк URL-адресов.
Как упоминалось в @ cap.py, вы напутались, используя requests
и selenium
одновременно. Когда вы выполняете веб-запрос GET, сервер назначения отправит вам текстовый ответ. Этот текст может быть просто текстом, например Hello world!
, или каким-то html. Но этот код html должен интерпретироваться на вашем компьютере, который отправил запрос.
Это точка селен по запросам: запросы возвращают текст, собранный из пункта назначения (URL), в то время как селен запрашивает браузер (например, Chrome), чтобы собрать текст и, если это какой-то текст html, интерпретировать его, чтобы вы получили реальную читаемую веб-страницу. Более того, браузер запускает javascript внутри вашей страницы, поэтому страницы Dynami c также работают.
В конце концов, единственное, что нужно для запуска вашего кода, - это сделать следующее:
import csv
from selenium import webdriver
from bs4 import BeautifulSoup as soup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as browser_wait
from selenium.webdriver.support import expected_conditions as EC
import requests
browser = webdriver.Chrome(executable_path=r'./chromedriver')
contents = []
with open('ClassPasslite.csv', 'rt') as cp_csv:
cp_url = csv.reader(cp_csv)
for row in cp_url:
links = row[0]
contents.append(links)
#link should be something like "https://www.classpass.com/studios/forever-body-coaching-london?search-id=49534025882004019"
for link in contents:
browser.get(link)
# paste the code you have here
Совет: не забывайте, что браузерам требуется время для загрузки страниц. Добавление time.sleep(3)
вам очень поможет.