Очистите любую строку с помощью Python + Beautiful Soup, который содержит 5 чисел - PullRequest
0 голосов
/ 28 мая 2018

Я живу в Германии, где почтовые индексы в большинстве случаев представляют собой 5-значное число, например 53525. Мне бы очень хотелось извлечь эту информацию с веб-сайта, используя красивый суп.

Я новичок в Python / Beautiful Soup и не знаю, как перевести «Найти каждые 5 чисел подряд +« ПРОБЕЛ »» на язык Python.

import requests
import urllib.request,re
from bs4 import BeautifulSoup

source = requests.get('DOMAIN').text
soup = BeautifulSoup(source, 'lxml')
soup.find_all(NOTSUREHERE)

1 Ответ

0 голосов
/ 28 мая 2018

В самом простом сценарии:

NOTSUREHERE следует заменить на name = 'tag_name', являясь tag_name возможным тегом, в котором вы наверняка найдете почтовые индексы (и никакое другое числовое поле, которое может бытьошибочный по почтовому индексу)

Затем каждый элемент этого объекта должен быть передан re.findall(regex, string), являющемуся: regex = '([0-9]{5})' (насколько я понимаю, шаблон был) и string элемент, из которого вы 'повторное извлечение почтовых индексов.

import requests
import urllib.request,re
from bs4 import BeautifulSoup

source = requests.get('DOMAIN').text
soup = BeautifulSoup(source, 'lxml')
tag_list = soup.find_all(name = 'tag_name')
match_list = []
for tag in tag_list:
    match_list.append(re.findall('([0-9]{5})', str(tag)))

Вам следует следить за возможными совпадениями, которые не являются почтовыми индексами.Это может быть в случае уточнения вызова soup.find_all() путем добавления дополнительных аргументов.Документация может дать вам еще больше возможностей, но аргумент attrs может быть установлен на {'target_attribute':'target_att_value'}, которые являются атрибутом и значением, которое определенно помечает тег с помощью почтового индекса.

РЕДАКТИРОВАТЬ: Относительно возможного пустогоэлементы, эта ссылка имеет очень простое решение: Удаление пустых элементов из массива в Python

...