Как извлечь только текст с сайта с помощью Jupyter? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь получить текст статьи по ссылке, но при импорте текста я получаю все остальные ссылки, рекламные ссылки и имена изображений, которые мне не нужны для анализа.

import re
from nltk import word_tokenize, sent_tokenize, ngrams
from collections import Counter
from urllib import request
from bs4 import BeautifulSoup
url = "https://www.yahoo.com/news/best-bites-weeknight-meals-cauliflower- 
 120000419.html" #this is the link 
html = request.urlopen(url).read().decode('utf8')
raw = BeautifulSoup(html,"lxml").get_text()
raw

Я получаю этот результат (скопировано всего несколько строк, я также получаю фактический текст статьи, но существует в других строках) :

window.performance && window.performance.mark && window.performance.mark (\ 'PageStart \'); Лучшие кусочки: еженедельное питание овощной жареный рис из цветной капусты! function (s, f, p) {var а = [], е = {_ версия: "3.6.0", _ конфигурации: {classPrefix: "", enableClasses: 0, enableJSClass: 0, usePrefixes: 0}, _ д: [], на: функции (е , т) {вар N = это; SetTimeout (функция () {Т (N [E])}, 0)}, addTest: функция (е, т, п) {a.push ({имя: е, п: т, опции: п })}, addAsyncTest: функция (е) {a.push ({имя: нуль, п: е})}}, л = функция () {}; l.prototype = е, л = новый l; var c = []; функция v (e, t) {возвращает тип e === t} var t = "Moz O ms Webkit», и = e._config

Я просто хочу знать, есть ли для меня какой-либо способ извлечь только текст статьи, игнорируя все эти значения.

1 Ответ

0 голосов
/ 11 сентября 2018

Когда BS4 анализирует сайт, он создает свой собственный DOM внутри как объект.

Чтобы получить доступ к различным частям DOM, мы должны использовать правильные методы доступа или теги, как показано ниже

import re
from collections import Counter
from urllib import request
from bs4 import BeautifulSoup

url = "https://www.yahoo.com/news/best-bites-weeknight-meals-cauliflower-120000419.html" #this is the link
html = request.urlopen(url).read().decode('utf8')
parsedHTML = BeautifulSoup(html, "html.parser")
readableText = parsedHTML.article.get_text() # <- we got the text from inside the <article> tag 
print(readableText) 

Вы были близки, но не указали, какой тег хотите получить get_text ()from.

Также find () и find_all () очень полезны для поиска тегов на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...