Scraping сайта на Python. Ошибка TimeOutException

Не судите строго. В рамках учебного проекта собираю текстовый корпус, решил написать парсер для сбора статей с сайта mining-portal.ru.

Сначала использовал библиотеку requests и bs4, но выяснилось, что для сайтов, использующих JS дря загрузки контента, эти библиотеки не подходят. Почитал инфу в инете, оказалось, надо использовать selenium и chromedriver.

Написал код (см.ниже), он запустился, но с ошибкой TimeOutException. Я пробовал увеличить значение тайм-аута (с 10 до 30), но это не помогло. Значит, проблема в другом месте.

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


def get_article_urls(url):

driver = webdriver.Chrome() 
driver.get(url)


articles = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.publish-item a[href]')))


base_url = 'http://www.mining-portal.ru'
article_links = [base_url + a.get_attribute('href') for a in articles]

driver.quit()
return article_links


def get_article_content(url):
# Настройка веб-драйвера
driver = webdriver.Chrome()
driver.get(url)


article = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#main-content')))

article_text = article.text.strip()

driver.quit()
return article_text


def save_articles_to_txt(articles, file_name):
with open(file_name, 'w', encoding='utf-8') as file:
    for url, content in articles.items():
        file.write(f'URL: {url}\n')
        file.write(content)
        file.write('\n\n---\n\n')


def main():
base_url = 'http://www.mining-portal.ru'
url =  base_url + '/publish/'
file_1 = 'articles_mining.txt'
articles_urls = get_article_urls(url)
articles = {}

for article_url in articles_urls:
    try:
        articles[article_url] = get_article_content(article_url)
    except Exception as e:
        print(f'Ошибка загрузки {article_url}: {e}')


save_articles_to_txt(articles, file_1)


if __name__ == '__main__':
   main()

Ответы (0 шт):