python爬虫類--requestsライブラリBeautifulSoupを利用して簡単にWebページの写真を取ります
3033 ワード
ネット爬虫類に接触し始めたばかりで、自分の学習過程を記録します.
開発環境:python 3.6 IDLE
対象とタスクを取得:学院のウェブサイト上の教師の情報を取得し、教師の写真をあるファイルの下に保存します.
url = 'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm'
プログラムコード:
図1'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm’ソースコード
実行結果.
***
開発環境: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()
図1'http://cmee.nwafu.edu.cn/szdw/gjzcry/index.htm’ソースコード
実行結果.
***