Атрибут ссылки не печатается в объекте BeautifulSoup - PullRequest
4 голосов
/ 06 мая 2019

Я пишу программу, которая будет получать заголовки самых популярных новостей из новостей Google.Предполагается печатать заголовок и ссылку на статью.Но он не будет печатать ссылку.

import bs4
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen

news_url="https://news.google.com/news/rss"
Client=urlopen(news_url)
xml_page=Client.read()
Client.close()

soup_page=soup(xml_page,"lxml")
news_list=soup_page.findAll("item")
# Print news title, url and publish date
for news in news_list:
  print(news.title.text)
  print(news.link.text)  
  print("-"*10)

Это пример строки вывода

Following Falcon 9 Saturday launch, CRS-17 Dragon arrives at the ISS

----------

, в которой предполагается напечатать заголовок и ссылку.но это только печать заголовка

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Этот html имеет странную структуру, но если вы замените цикл for в своем коде на:

for news in news_list:
   link = news.select_one('title')    
   print(link.text)
   print(link.next_sibling.next_sibling)
   print("-"*10)

Вы должны получить заголовок со ссылкой.

1 голос
/ 06 мая 2019

Вы должны изменить эту строку в своем коде:

soup_page=soup(xml_page,"lxml")

в

soup_page=soup(xml_page,"xml")

и вы получите результат.

...