我住在德国,那里的邮政编码在大多数情况下都是 5 位数字。 53525。我真的很想使用 beautiful Soup 从网站中提取该信息。
我是 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)
你可以使用正则表达式来查找包含 5 个数字的字符串。以下是用 Python 和 Beautiful Soup 编写的代码示例:
import requests
import re
from bs4 import BeautifulSoup
source = requests.get('https://example.com').text # 替换为你的目标网址
soup = BeautifulSoup(source, 'lxml')
zip_codes = []
for element in soup.find_all(text=re.compile(r'\b\d{5}\b')):
zip_codes.append(element.strip())
print(zip_codes)
这段代码会:
-
发送请求并解析网页:
使用
requests.get()
获取网页内容,并使用BeautifulSoup
解析 HTML。 -
查找包含 5 位数字的文本:
使用
soup.find_all(text=re.compile(r'\b\d{5}\b'))
来查找所有包含 5 位数字的文本。-
\b
匹配单词边界,确保我们匹配的是独立的 5 位数字,而不是更长数字的一部分。 -
\d{5}
匹配 5 个连续的数字。
-
-
提取并存储邮政编码:
循环遍历所有匹配的文本,使用
.strip()
去除空格,并将结果存储在zip_codes
列表中。 - 打印结果: 打印找到的所有邮政编码。
注意: 这段代码会查找所有包含 5 位数字的文本,而不仅仅是邮政编码。如果网页中还有其他 5 位数字的内容,你需要根据网页结构进一步筛选结果。
你可以将
https://example.com
替换为你想要抓取的网站地址。