【问题标题】:Can't parse weird looking website addresses from some identical links无法从一些相同的链接解析奇怪的网站地址
【发布时间】:2019-08-21 22:13:04
【问题描述】:

我正在尝试从一些相同的网页中提取网站地址。我创建了一个正则表达式来解析相同的内容,但我定义的模式无疑是最糟糕的。如何仅从位于p 标记内post-content 类下的网页中获取网站地址?。

我试过了:

import re
import requests
from bs4 import BeautifulSoup

links = [
    'https://colegios.es/2012/santisimo-rosario-mosen-rubi-avila/',
    'https://colegios.es/2012/cra-el-valle-villarejo-del-valle/',
    'https://colegios.es/2012/ceip-las-canadas-trescasas/',
    'https://colegios.es/2012/cra-el-barranco-san-esteban-del-valle/'
]

def get_website(link):
    res = requests.get(link,headers={'User-Agent':'Mozilla/5.0'})
    soup = BeautifulSoup(res.text,"html5lib")
    text = soup.select_one('.post-content > p').get_text(strip=True, separator='\n')
    website = re.findall(r'\s+(.*)\n\[', text)[0]
    print(website)

if __name__ == '__main__':
    for link in links:
        get_website(link)

我得到的结果:

www3.planalfa.es/stmorosario
centros1.pntic.mec.es/elvalle/webCra
Dirección: Las Pozas, 17 40194 Trescasas Segovia
Tel. 920 383 556 05005887@educa.jcyl.es   centros1.pntic.mec.es/cp.el.barranco

期望的结果:

www3.planalfa.es/stmorosario
centros1.pntic.mec.es/elvalle/webCra

centros1.pntic.mec.es/cp.el.barranco

【问题讨论】:

  • 该网站部分的格式似乎没有任何一致的方式,它只是纯文本。

标签: python regex python-3.x web-scraping


【解决方案1】:

我相信用不了多久就可以打破以下内容

import re
import requests
from bs4 import BeautifulSoup

links = [
    'https://colegios.es/2012/santisimo-rosario-mosen-rubi-avila/',
    'https://colegios.es/2012/cra-el-valle-villarejo-del-valle/',
    'https://colegios.es/2012/ceip-las-canadas-trescasas/',
    'https://colegios.es/2012/cra-el-barranco-san-esteban-del-valle/'
]

def get_website(link):
    res = s.get(link,headers={'User-Agent':'Mozilla/5.0'})
    soup = BeautifulSoup(res.text,"html5lib")
    y = str(soup.select_one('.post-content p')).split('<br/>')[-2]
    if 'Dirección' not in y:
        y = re.sub(r'\s{2,}', ' ', y).strip()
        website = y.split(' ')[-1]
        print(website)

if __name__ == '__main__':
    with requests.Session() as s:
        for link in links:
            get_website(link)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多