Не могу ограничить мой скрипт для анализа определенного раздела с веб-страницы - PullRequest
0 голосов
/ 17 сентября 2018

Я написал скрипт на python, чтобы вычистить описание в Plot с веб-страницы. Дело в том, что описание находится в нескольких p тегах. Есть и другие теги p, которые я не хочу очищать. Как только мой скрипт завершит разбор описания Plot, он должен остановиться. Однако мой скрипт ниже анализирует все теги p до конца, начиная с раздела Plot.

Как я могу ограничить свой скрипт для анализа описания только Plot?

Это то, что я написал:

import requests
from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/Alien_(film)"

with requests.Session() as s:
    s.headers={"User-Agent":"Mozilla/5.0"}
    res = s.get(url)
    soup = BeautifulSoup(res.text,"lxml")
    plot = [item.text for item in soup.select_one("#Plot").find_parent().find_next_siblings("p")]
    print(plot)

Ответы [ 2 ]

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

Вы можете выбрать абзацы перед следующим заголовком, например

with requests.Session() as s:
    s.headers={"User-Agent":"Mozilla/5.0"}
    res = s.get(url)
    soup = BeautifulSoup(res.text,"lxml")

    plot_start = [item for item in soup.select_one("#Plot").find_parent().find_next_siblings()]
    plot = []
    for item in plot_start:
        if item.name != 'h2':
            plot.append(item.text)
        else:
            break
    print(plot)
0 голосов
/ 17 сентября 2018

Если вы не обязаны использовать beautifulSoup, попробуйте ниже получить необходимый фрагмент текста

from lxml import html

with requests.Session() as s:
    s.headers={"User-Agent":"Mozilla/5.0"}
    res = s.get(url)
    source = html.fromstring(res.content)
    plot = [item.text_content() for item in source.xpath('//p[preceding::h2[1][span="Plot"]]')]
    print(plot)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...