python爬虫類--requestsライブラリBeautifulSoupを利用して簡単にWebページの写真を取ります


ネット爬虫類に接触し始めたばかりで、自分の学習過程を記録します.
開発環境:python 3.6 IDLE
対象とタスクを取得:学院のウェブサイト上の教師の情報を取得し、教師の写真をあるファイルの下に保存します.
url = 'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm'
プログラムコード:
import requests
import bs4
import os
from bs4 import BeautifulSoup
import re

#  url       
def getHTMLText(url):
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

#  BeautifulSoup     , a               
def fillName(ulist, html):
    soup = BeautifulSoup(html, "html.parser")
    for tag in soup.find_all('a'):
        ulist.append([tag.string, tag.attrs['href']])

#            href        ,     。    1            
def getName(ulist):
    tplt = "{:^10}\t{:<50}"
    print(tplt.format("  ", "  "))
    for i in range(len(ulist)):
        try:
            u = ulist[i]
            print(tplt.format(u[0], u[1]))
        except:
            continue

#  href         ,           
def getInfo(ulist):
    root = "F://pics//"
    for i in range(15,len(ulist)-1):
        personinfo = ulist[i]
        personname = personinfo[0]
        personurl = personinfo[1]
        path = root + personname +'.png'
        personhtml = getHTMLText(personurl)
        soup = BeautifulSoup(personhtml, "html.parser")
        """
        print("    :"+personname)
        for tag in soup.find_all('p'):
            print(tag.string)
        """    
        try:
            match = re.search(r'src\=\"\.\.\/\.\.\/images\/content\/.*?g',personhtml)
            strurl = match.group(0)
        except:
            continue
        if not os.path.exists(root):
            os.mkdir(root)
        pictureurl = 'http://cmee.nwsuaf.edu.cn/i' + strurl.split('i')[-1]
        r = requests.get(pictureurl)
        with open(path, 'wb') as f:
            f.write(r.content)
            f.close()

def main():
    uinfo = []
    url = 'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm'
    html = getHTMLText(url)
    fillName(uinfo, html)
    getName(uinfo)
    getInfo(uinfo)
    
main()

python爬虫——利用requests库BeautifulSoup简单爬取网页上照片_第1张图片
図1'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm’ソースコード
python爬虫——利用requests库BeautifulSoup简单爬取网页上照片_第2张图片
実行結果.
***