Beautifulsoup избавиться от встроенных JS и CSS в HTML

Мне нужно разобрать несколько HTML через requests.get(), Мне просто нужно сохранить содержимое страницы и избавиться от встроенного JavaScript и CSS. Я видел следующий пост, но решение не работает для меня.http://stackru.com/questions/14344476/how-to-strip-entire-html-css-and-js-code-or-tags-from-html-page-in-python, http://stackru.com/questions/1936466/beautifulsoup-grab-visible-webpage-text, а также http://stackru.com/questions/2081586/web-scraping-with-python

У меня есть рабочий код, который не удаляет JS или CSS... вот мой код...

count = 1
for link in clean_urls[:2]:
    page = requests.get(link, timeout=5)
    try:
        page = BeautifulSoup(page.content, 'html.parser').text
        webpage_out = open(my_params['q'] + '_' + str(count) + '.txt', 'w')
        webpage_out.write(clean_page)
        count += 1
    except:
        pass


webpage_out.close()

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

Вопрос Обновление 4 октября 2016

Файл, который read.csv это что-то вроде этого...

trump,clinton
data science, operating system
windows,linux
diabetes,cancer

Я нажал на gigablast.com с этими условиями, чтобы найти одну строку за раз. Один поиск будет trump clinton, Результатом является список URL. я requests.get(url) и я обрабатываю эти URL, избавляясь от timeouts, status_code = 400sи создание чистого списка clean_urls = [], После этого я запускаю следующий код...

count = 1
for link in clean_urls[:2]:
    page = requests.get(link, timeout=5)
    try:
        page = BeautifulSoup(page.content, 'html.parser').text
        webpage_out = open(my_params['q'] + '_' + str(count) + '.txt', 'w')
        webpage_out.write(clean_page)
        count += 1
    except:
        pass


webpage_out.close()

На этой строке кода page = BeautifulSoup(page.content, 'html.parser').text У меня есть текст всей веб-страницы, включая стили и сценарии, если они были встроены. Я не могу нацелиться на них с BeautifulSoup, потому что теги больше не там. Я попробовал page = BeautifulSoup(page.content, 'html.parser') а также find_all('<script>') и попытаться избавиться от сценария, но в итоге я удалил весь файл. Желаемым результатом будет весь текст HTML без каких-либо...

body {
    font: something;
}

или любой javascript...

$(document).ready(function(){
    $some code
)};

В конечном файле не должно быть никакого кода, только содержание документа.

0 ответов

Я использовал этот код, чтобы избавиться от JavaScript и CSS-кода при утилизации HTML-страницы

import requests
from bs4 import BeautifulSoup

url = 'https://corporate.walmart.com/our-story/our-business'
r = requests.get(url)
html_doc = r.text

soup = BeautifulSoup(html_doc, 'html.parser')
title =  soup.title.string

for script in soup(["script", "style"]):
    script.decompose()    

with open('output_file.txt', "a") as text_file:
    text_file.write("\nURL : "+ url)
    text_file.write("\nTitle : " + title)


    for p_tag_data in soup.find_all('p'):
        text_file.write("\n"+p_tag_data.text)

    for li_tag_data in soup.find_all('li'):
        text_file.write("\n"+li_tag_data.text)

    for div_tag_data in soup.find_all('div'):
        text_file.write("\n"+div_tag_data.text)
Другие вопросы по тегам