我尝试使用python从网页中获取四个字段,但问题是我要查找的数据不在任何结构化html中,因此我找不到任何方法分别获取它们
我试过:
import re
import requests
from bs4 import BeautifulSoup
link = 'https://colegios.es/2012/cra-la-gaznata-san-bartolome-de-pinares/'
def get_content(link):
res = requests.get(link,headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,"lxml")
school_name = soup.select_one("h1 > a").get_text(strip=True)
school_address = soup.find("p",text=re.compile('Dirección:\s*([^"]*?)')).text
school_phone = soup.find("p",text=re.compile('Tel\.\s*(.*?)\s*')).text
print(school_name,school_address,school_phone)
if __name__ == '__main__':
get_content(link)
我得到的真是一团糟:
CRA La Gaznata San Bartolomé de Pinares CRA La Gaznata Servicios: Jornada contínua, Educación Infantil y Primaria Público Dirección: del Pino, 2 5267 San Bartolomé de Pinares Ávila Tel. 920 270 070 Fax 920 270 070 05005981@educa.jcyl.es [google-map-v3 addmarkerlist=”del Pino, 2 5267 San Bartolomé de Pinares Ávila {}5-default.png”] CRA La Gaznata Servicios: Jornada contínua, Educación Infantil y Primaria Público Dirección: del Pino, 2 5267 San Bartolomé de Pinares Ávila Tel. 920 270 070 Fax 920 270 070 05005981@educa.jcyl.es [google-map-v3 addmarkerlist=”del Pino, 2 5267 San Bartolomé de Pinares Ávila {}5-default.png”]
我希望获取的输出(第二个在name中可用):
CRA La Gaznata
San Bartolomé de Pinares
del Pino, 2 5267 San Bartolomé de Pinares Ávila
920 270 070
如何从该网页获取四个字段
关键是将解析器更改为
html5lib
,这样<br>
标记将通过get_text()
方法正确地转换为换行符-然后使用re
更容易解析文本:印刷品:
相关问题 更多 >
编程相关推荐