代码如下:
#coding=utf-8import re
import requests
from bs4 import BeautifulSoup
resp = requests.get('http://bbs.tiexue.net/post_4337054_1.html')
if resp.status_code == 200:
soup = BeautifulSoup(resp.content.decode('GB2312'), 'xml')
content = soup.find('div', id = 'postContent')
items = content.find_all('p', attrs = {'class': 'bbsp'})
regex = re.compile(r'\d*(.*?)\s*((?:\d+°\s?)?(?:\d+\'\s?)?(?:\d+\.\d+\"\s?)?N)\s*((?:\d+°\s?)?(?:\d+\'\s?)?(?:\d+\.\d+\"\s?)?[WE])')
for item in items:
line = item.text.strip()
if line != '':
match = regex.match(line)
if match:
groups = match.groups()
print('名称:', groups[0])
print('北纬:', groups[1])
print('东经:', groups[2])
print('----------------------------------------')
运行结果:
可以使用Python的regex模块并re.sub()替换要摆脱的任何字符。您既可以使用黑名单替换所有不需要的字符,也可以对所有希望允许的字符使用白名单,仅保留这些字符。
在python中,所谓的“正则表达式”指的是通常被用来检索、替换那些符合某个模式的一段文本。具体而言,它的作用是检测某个字符串是否符合规则和提取网页字符串中想要的数据。
import rec='sdsdaherf=sadasdada sdad123,21312!!!' pattern=re.compile('herf=(.*)') pattern.findall(c) a=re.findall('herf=(.*)', c) a 结果就是 Out[9]: ['sadasdada sdad123,21312!!!']