关于Python网络爬虫与信息提取,除了提取最好大学排名字段,还可以批量下载图片(同步学校名称)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于Python网络爬虫与信息提取,除了提取最好大学排名字段,还可以批量下载图片(同步学校名称),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2576字,纯文字阅读大概需要4分钟。
内容图文
这两天学习了中国大学:https://www.icourse163.org,实例6 中国大学排名,于是操作了下,由于嵩天老师提供的网页目前已经发生变化,给一起学习的小伙伴带来些困扰,按照老师教授的知识,我突发奇想,可不可以用所学知识将实例中“最好大学”最新网页上的图片爬取下来呢?答案是可以的,以下为我的实践输出,还希望各位大佬互相学习。如有不明白的地方,可留言私信,
#将网站上的图片资源获取下来(单个网页上所有图片获取下来,并修改文件名称)
#
import os
import requests
import bs4
from bs4 import BeautifulSoup
import re
#获取目标文本【爬取网页通用代码框架】,所需参数url为主函数提供
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "获取网页文本失败"
#自定义函数,设定传入参数,参数从getHTMLText(url)方法运算后的结果赋予的变量-demo,解析网页并遍历所需标签,提取所需内容后返回给主函数变量供其他模块函数调用
def jiexi(ulist,demo,url1,schoolname):
soup = BeautifulSoup(demo,"html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr,bs4.element.Tag): #这个地方是判断是否为Tag标签,如果不是则舍弃
tds = tr('td') #将td标签内容加入tds列表中,以上为遍历<tbody>儿子标签内容,并赋予一个变量tds
for tag in tds[1].find_all(re.compile('img')): #正则表达式、find_all函数、for循环一次,匹配变量tds[1]中所有'img'标签,一旦匹配成功,如下:
url1.append(tag.get('src')) #则使用主函数main()中传入的空列表[]url1和append的函数;get()函数用于解析'img'标签,提取'src'后的链接内容
for schnam in tds[1].find_all(re.compile('a')): #正则表达式、find_all函数、匹配变量tds[1]中所有'a'标签,一旦匹配成功,如下:
schoolname.append(schnam.string) #则使用主函数main()中传入的空列表[]schoolname和append的函数 ;标签.string 用于提取标签内非属性字符串
#自定义函数,设定传入参数:url1,schoolname,其参数从jiexi()函数中运算得来,再次运算,该函数也引用了【网络图片存储通用代码框架】
def download(url1,schoolname):
root = "D://pics2//"
path = ""
for i in url1:
#ss = ''.join(i) #由于url1中的元素为列表类型,需转换成字符成类型方可进一步操作,其实不需要,只要将url1.append([tag.get('src')]) 中[]去掉即可,pass
path = root + schoolname[url1.index(i)*2] + ".png" #文件路径、名称
#print(path) 调试用,pass
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(i)
with open(path,'wb') as f:
f.write(r.content)
f.close()
print('文件保存成功')
else:
print('文件已存在')
except:
print('爬取失败')
def main():
url = 'https://www.shanghairanking.cn/rankings/bcur/2020'
demo = getHTMLText(url)
ulist = []
url1 = []
schoolname = []
jiexi(ulist,demo,url1,schoolname)
download(url1,schoolname)
main()
最终效果:
内容总结
以上是互联网集市为您收集整理的关于Python网络爬虫与信息提取,除了提取最好大学排名字段,还可以批量下载图片(同步学校名称)全部内容,希望文章能够帮你解决关于Python网络爬虫与信息提取,除了提取最好大学排名字段,还可以批量下载图片(同步学校名称)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。