Python - читать фрагмент BeautifulSoup по строке? (или другие способы очистки данных, которые я хочу) - PullRequest
1 голос
/ 23 февраля 2012

У меня есть веб-страница, которую я читаю, используя Python и BeautifulSoup, скажем, soup=BeautifulSoup(urllib2.urlopen(site)).

Я пытаюсь получить фрагмент сайта и проанализировать его, поэтому я использую pTag = soup.find("p", {"class":"secondary"}), которыйприводит к следующему содержанию.

<p class="secondary">
              Some address and street
              <br />
              City, State, ZIP
              (some) phone-number
             </p>

Я хотел бы в основном иметь переменные address1, address2 и phone такие, что:

address1= "Some address and street"
address2= "City, State, ZIP"
phone= "(some) phone-number"

Я не уверен, как читать строкисупа для выборочного выбора строк 1, 3, 4 (при условии, что начинается строка 0), но опять же, я также открыт для других способов получения нужных мне данных.

Заранее спасибо!:)

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Предполагается, что address содержит ваш необработанный адрес.

<p class="secondary">
              Some address and street
              <br />
              City, State, ZIP
              (some) phone-number
             </p>

Затем вы можете заменить строку разрыва запятой, прежде чем окончательно разделить запятой. Это не идеально, но для этих сценариев, когда нет четкого разделения между элементами (диапазоны, идентификаторы и т. Д.), Все сводится к позиционной проверке.

address.find("br").replaceWith(",")
addressComponents = address.text.split(",")

Это дает вам следующие четыре компонента в списке addressComponents.

Some address and street
City
 State
 ZIP
              (some) phone-number

Поскольку для почтового индекса и номера телефона нет строки разрыва, кажется, вставлен символ новой строки. Итак, чтобы разделить окончательный компонент:

addressSplit = addressComponents[3].split("\n")
print addressSplit[0] # Zip code
print addressSplit[1].strip() # Phone number
0 голосов
/ 24 февраля 2012

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

http://docs.python.org/library/htmlparser.html#example-html-parser-application

Игра с этим лучшим примером и построение моего собственного класса вокруг него сделали анализ HTML очень простым.

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