使用Python从网站中提取街道地址

时间:2020-07-10 17:57:18

标签: python beautifulsoup web-crawler urllib

社区

我最近使用了编码,目前正在使用Python3,urllib,BeautifulSoup,RegEx和SQLite进行我的第一个项目。 我的目标是建立一个数据库,包括创业公司的名称,网站网址,行业和街道地址。

到目前为止,我的方法是将链接插入VC的投资组合页面,提取到公司的链接,并获取公司烙印站点的html,然后将所有内容保存到SQLite数据库中。它大多数都能工作(某些边缘情况除外)。 我的问题是从HTML获取街道地址。我尝试了多种正则表达式方法,但由于格式在不同网站上是如此不同,因此没有任何实际作用。 另外,这个post使我感到自己在尝试首先在HTML上使用正则表达式时走错了路。

关于如何完成工作的任何建议?

(我知道我已经可以使用一些现有的数据库(crunchbase,...),但是我更愿意利用这个机会来练习网络抓取) 干杯, 马克

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)

这是我要获取的信息(以黄色突出显示):

Company address from the imprint page

我遇到过一些格式,还有更多:

各个页面在提供的信息(公司的法定名称,街道号,邮政编码,城市,国家,法律标识号(例如税号)或其他信息),样式(文字内,一行,在不同的行上),以及它们所在的容器类型(div,段落,...)

有时,在与x1和h1或h2相同的xpath中提供了地址,并带有文本“ Imprint”或“ Contact”。不幸的是,这远非标准。

0 个答案:

没有答案
相关问题