Web-Scraping Python. Пустой список
Написал простой парсер для скачивания статей с с сайта http://www.mining-portal.ru и их копирования в файл txt. По какой-то причине в файл записывается пустота, т.е. функции get_article_urls и get_article_content возвращают пустой список. Скорее всего, проблема в CSS селекторе -- возможно, я не тот ввел, но я уже несколько раз делал инспект сайта и вроде все было выбрано верно... Пожалуйста, объясните при возможности, что может быть не так.
import requests
from bs4 import BeautifulSoup
def get_article_urls(url):
article_links = []
page_number = 1
base_url = 'http://www.mining-portal.ru'
url = base_url + '/publish/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
while True:
response = requests.get(url + str(page_number))
soup = BeautifulSoup(response.text, 'html.parser')
page_links = [base_url + a['href'] for a in soup.select('.publish-item .publish-title a[href]')]
if not page_links:
break
article_links.extend(page_links)
page_number += 1
return article_links
def get_article_content(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
article = soup.select_one('#main-content')
return article.text.strip()
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/?&p1='
article_urls = get_article_urls(url)
articles = {}
for article_url in article_urls:
try:
articles[article_url] = get_article_content(article_url)
except Exception as e:
print(f'Error downloading {article_url}: {e}')
save_articles_to_txt(articles, 'articles_mining.txt')
if __name__ == '__main__':
main()
Источник: Stack Overflow на русском