Я пытаюсь извлечь истории с nbcnews.com. Сейчас у меня следующий код:Получение новостей в Python с использованием BeautifulSoup
import urllib2
from bs4 import BeautifulSoup
# The page that I'm getting stories from
url = 'http://www.nbcnews.com/'
data = urllib2.urlopen(url)
soup = BeautifulSoup(data, 'html.parser')
#This is the tag and class that chrome told me "top stories" are stored in
this = soup.find_all('div', attrs={"class": "col-sm-6 col-md-8 col-lg-9"})
#Get the a tags in the previous tag (this is the part that returns FAR too many links
link = [a for i in this for a in i.find_all('a')]
#Get the titles (This works)
title = [a.get_text() for i in link for a in i.find_all('h3')]
#The below strips all newlines and tabs from the title name
newtitle = []
for i in t:
s = ' '.join(i.split())
if s in newtitle:
pass
else:
newtitle.append(s)
print len(link)
print len(title)
Когда я запускаю сценарий, то «Название» список (в основном) правильно с небольшими вариациями названий заголовков на сайте (название название это не проблема, если это близко к тому же)
Моя проблема в том, что в списке ссылок есть ссылки со всего мира? Может кто-то помочь мне с этим?
Или, если возможно, есть ли API для чего-то подобного? Я бы предпочел не изобретать велосипед для получения новостных статей, если я могу его избежать.
EDIT: изменил опечатка в имени переменной
Спасибо, сэр, я играл с базовыми веб-страницами с BS4, но после того, как догнал HTML, я хотел попытаться перемещаться по более сложным страницам. +1 к вам. Спасибо, что помогли мне. Это сделает приятное дополнение к моему помощнику голоса. Что такое новостные статьи, если вы связаны с неправильным, не так ли? ;) – Jebby
Добро пожаловать. Пожалуйста, примите этот ответ, если он решит вашу проблему, он вернет мне очки взамен. Спасибо :) –
На данный момент меня нет дома, поэтому я не могу проверить код. Когда я вернусь домой, я проверю, если это сработает, я приму ответ. – Jebby