community,
Недавно я начал писать код и сейчас работаю над своим первым проектом, используя Python3, urllib, BeautifulSoup, RegEx и SQLite. Моя цель - собрать базу данных о стартапах, включая их имена, URL-адреса веб-сайтов, отрасль и почтовые адреса.
До сих пор мой подход заключался в том, что я вставляю ссылку на страницу портфолио V C извлеките ссылку на компании, получите html отпечатка сайта компании и сохраните все это в базе данных SQLite. Большинство из них работает (кроме некоторых крайних случаев). Моя проблема заключается в получении почтовых адресов из HTML. Я пробовал несколько подходов к регулярным выражениям, но на самом деле ничего не работало, так как форматирование на разных веб-сайтах настолько разнообразно. Кроме того, этот пост заставил меня почувствовать, что я нахожусь на неправильном пути, пытаясь в первую очередь использовать регулярное выражение для HTML.
Есть какие-нибудь предложения о том, как выполнить эту работу?
(Я знаю, что есть несколько существующих баз данных (crunchbase, ...), которые я мог бы использовать, но я бы предпочел использовать эту возможность, чтобы попрактиковаться в парсинге) Ура, март c
import sqlite3
import urllib.error
import ssl
import re
from urllib.request import urlopen
from bs4 import BeautifulSoup
conn = sqlite3.connect('startupmap.sqlite')
cur = conn.cursor()
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
document = urlopen('https://about.eslgaming.com/imprint/',context=ctx)
html = document.read()
print('Type html:' , type(html))
soup = BeautifulSoup(html,'html.parser')
html_text = soup.get_text()
print(html_text)
print('Type html_text:' , type(html_text))
print(soup.prettify())
address = re.findall('\s[0-9]{5}\s+[a-zA-ZäöüÄÖÜ]+',html_text)
print('Address:' ,address)
И это часть информации (выделена желтым), которую я пытаюсь получить:
Адрес компании со страницы выходных данных
Некоторые из форматов, с которыми я сталкивался, и их гораздо больше:
* 10 38 * Отдельные страницы различаются с точки зрения предоставляемой информации (юридическое название компании, улица + номер, почтовый индекс, город, страна, юридические идентификационные номера, такие как налоговый идентификатор или другая информация), стиля (в тексте, в одной строке, на отдельные строки), и в каком типе контейнера они находятся (div, paragraph, ...)
Иногда адреса предоставляются в том же xpath, что и h1 или h2 с текстом «Imprint» или Контакты ». К сожалению, это далеко не стандарт.