我住在德国,其中邮政编码在大多数情况下是5位数字f.e. 53525.我真的想用一个漂亮的汤从网站上提取这些信息。
我是Python / Beautiful Soup的新手,我不知道如何翻译"连续找到每5个数字+" SPACE""到Python语言。
import requests
import urllib.request,re
from bs4 import BeautifulSoup
source = requests.get('DOMAIN').text
soup = BeautifulSoup(source, 'lxml')
soup.find_all(NOTSUREHERE)

答案 0 :(得分:2)
在最简单的情况下:
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'}
作为属性的值,以及明确标记带有邮政编码的标记的值。
编辑:关于可能的空元素,此链接有一个非常简单的解决方案:Removing empty elements from an array in Python