Без точного полного RSS-канала, который вы используете, я собираюсь выйти на конечность и предположить, что стиль, похожий на RSS-канал, который я могу найти. Если вы посмотрите на выходной html, то увидите, что ссылки на самом деле являются следующими братьями и сестрами, поэтому вы можете использовать xpath и указать для следующего брата. Я использую purrr для генерации фрейма данных и str_squish для некоторой очистки вывода
R:
library(rvest)
library(tidyverse)
library(stringr)
wsj_1 <- 'https://feeds.a.dj.com/rss/RSSWorldNews.xml'
nodes <- wsj_1%>%read_html()%>%html_nodes('item')
df <- map_df(nodes, function(item) {
data.frame(title = str_squish(item%>%html_node('title') %>% html_text()),
link = str_squish(item%>%html_node(xpath="*/following-sibling::text()") %>%
html_text()),
stringsAsFactors=FALSE)
})
Py:
import requests, re
from bs4 import BeautifulSoup as bs
import pandas as pd
r = requests.get('https://feeds.a.dj.com/rss/RSSWorldNews.xml')
soup = bs(r.content, 'lxml')
titles = []; links = []
for i in soup.select('item'):
titles+=[re.sub(r'\n+\s+\t+',' ',i.title.text.strip())]
links+=[i.link.next_sibling]
df = pd.DataFrame(zip(titles, links), columns = ['Title', 'Link'])
print(df)