1.爬取网页
https://www.cae.cn/cae/html/main/col48/column_48_1.html
2.爬虫思路
1.网页源码分析,判断网页是动态网页与静态网页(改网页位静态网页)
2.获取每位院士网页地址
3.进入网页查看院士图片地址,与院士文本介绍内容,(利用re库解析网页)
4.数据存储,图片存储,注意保存图片格式,图片格式有png,jpg等格式,保存图片士注意要加入content,保证内容位图片二进制源码,否则会出现错误。
3.每位院士地址获取
图中a标签中href值位每位院士的网页地址,且该地址不完整,要对地址进行字符串拼接处理加入https://www.cae.cn,利用re库对该网页地址所有的院士网页数据解析。利用拼接好的网页地址进行网页请去获取数据,
4.院士图片地址获取
图中a标签下img标签中src值位每位院士的图片地址,且该地址不完整,要对地址进行字符串拼接处理,同样要加入 加入https://www.cae.cn, 院士介绍数据获取方法相同,
5.爬虫代码
import re
import os
import os.path
import requests
#创建用来存放爬取结果文件的文件夹
dstDir='YuanShi'
if not os.path.isdir(dstDir):
os.mkdir (dstDir)
#爬取起始页面
startUrl =r'https://www.cae.cn/cae/html/main/col48/column_48_1.html'
#读取网页内容
with requests.get(startUrl) as fp:
content=fp.text
print(content)
#提取并遍历每位院士的链接
pattern =r'<li class="name_list"><a href="(.+)" target="_blank">(.+)</a></li>'
result=re.findall (pattern, content)
print(result)
#爬取每位院士的简介和照片
for item in result:
perUrl, name =item
print('正在爬取{}…'.format(perUrl))
name=os.path.join(dstDir,name)
perUrl =r'http://www.cae.cn' + perUrl
with requests.get(perUrl) as fp:
content=fp.text
#抓取照片并保存为本地图片文件
pattern=r'<img src="/cae/admin/upload/(.+)" style='
result =re.findall(pattern,content, re.I)
print(result)
if result:
picurl=r'http://www.cae.cn/cae/admin/upload/{0}'.format(result[0])
with open (name+'.png','wb' ) as pic:
pic.write(requests.get(picurl).content)
#抓取简介并写人本地文本文件
pattern =r'<p>(.+?)</p>'
result =re.findall(pattern,content)
print(result)
if result:
intro = re.sub(' (<a.+</a >)|( )|( )','','\n'.join(result))
with open (name+'.txt','w', encoding='utf8') as fp:
fp.write(intro)
运行结果
标签:网页,python,爬虫,院士,re,地址,result,文本,cae From: https://blog.csdn.net/m0_69704149/article/details/145093231