Я просматривал веб-страницы, читал и смотрел несколько руководств в Интернете о том, как решить мою проблему, но я застрял и надеюсь получить некоторую информацию. Я пытаюсь создать веб-скребок, который очистит раздел сделок M & A от Reuters и успешно сумел написать программу, которая может очистить заголовок, сводку, дату и ссылку для статьи. Однако проблема, которую я пытаюсь решить, заключается в том, что я хочу, чтобы программа вычищала только заголовки / статьи со сводкой, которые расположены непосредственно под столбцом «Слияния и поглощения». Текущая программа очищает ВСЕ заголовки, которые она видит, помеченные тегом «article» и атрибутом / классом «story», и, таким образом, в результате получается не только удаление заголовков из столбца «Слияния и поглощения», но и столбца «Новости рынка». ,
Я продолжал получать ошибки атрибутов, как только бот начал собирать заголовки из столбца Market News, так как столбцы рыночных новостей не содержат никаких сводок и, следовательно, никакого текста для извлечения, что приводит к завершению моего кода. Я попытался исправить это с помощью пути try / кроме logi c, думая, что он не будет тянуть заголовки из столбца Market News, однако код продолжал тянуть заголовки.
Я пытался написать новый В строке кода, которая сообщает программе вместо поиска всех тегов со статьями, ищите все теги с, думая, что, если бы я дал боту более прямой путь, по которому он следовал, он бы вычеркнул статьи, идущие сверху вниз. Однако это не удалось, и теперь у меня просто болит голова. Спасибо всем заранее!
Вот мой код ниже:
from bs4 import BeautifulSoup
import requests
website = 'https://www.reuters.com/finance/deals/mergers'
source = requests.get(website).text
soup = BeautifulSoup(source, 'lxml')
for article in soup.find_all('article'):
headline = article.div.a.h3.text.strip()
#threw in strip() to fix the issue of a bunch of space being printed before the headline title.
print(headline+ "\n")
date = article.find("span",class_ = 'timestamp').text
print(date)
try: #Put in Try/Except logic to keep the code going
summary = article.find("div", class_="story-content").p.text
print(summary + "\n")
link = article.find('div', class_='story-content').a['href']
#this bit [href] is the syntax needed for me to pull out the URL from the html code
origin = "https://www.reuters.com/finance/deals/mergers"
print(origin + link + "\n")
except Exception as e:
summary = None
link = None
#This section here is another part I'm working on to get the scraper to go to
#the next page and continue scraping for headlines, dates, summaries, and links
next_page = soup.find('a', class_='control-nav-next')["href"]
source = requests.get(website + next_page).text
soup = BeautifulSoup(source, 'lxml')