爬取草书网站(http://www.shufazidian.com/)的草书字体图片

要求

在书法字体查询网站http://www.shufazidian.com/爬取草书的字体图片,并将其保存到本地文件夹,以汉字为文件名,以人名为保存的图片名。

关于所用库的介绍

requests库:

使用pip install requests即可完成安装,是用于爬虫的关键库,requests库简单易上手,requests实现了 HTTP协议中绝大部分功能,它提供的功能包括 Keep-Alive、连接池、Cookie持久化、内容自动解压、HTTP代理、SSL认证、连接超时、Session等很多特性,可支持get请求,post表单请求,最重要的是它同时兼容 python2 和 python3。

os模块:

python的os模块是内置标准库,不需要额外下载,可以直接导入使用。
os 模块提供了访问操作系统服务的功能,在对文件进行操作的时候,open() 这个内建函数可以打开文件,但是如果要对文件进行重命名,删除等操作,就要用到 os 模块的方法。

BeautifulSoup库:

在使用BeautifulSoup库时需要使用pip install bs4命令安装,然后通过from bs4 import beautifulsoup导入使用,Beautiful Soup库是解析、遍历、维护“标签树”的功能库。Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性。通过Beautiful Soup库,我们可以将指定的class或id值作为参数,来直接获取到对应标签的相关数据,这样的处理方式简洁明了。此外,BeautifulSoup在使用时依赖解析器,如lxml,html5lib等,需要额外下载。

代码解读

本项目由以下四个函数构成,

get_page(url,word):  #获取网页元素
parse_page(html):       #解析网页
to_file(url,word):  #将文件保存到本地
main ():            #主函数1.get_page(url,word)函数def get_page(url,word):try:headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 ' #构造爬虫请求头'(KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',"referer": "http://www.shufazidian.com/","Accept": "text/html, application/xhtml+xml, image/jxr, */*","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN","Cache-Control": "no-cache","Connection": "Keep-Alive","Content-Length": "19","Content-Type": "application/x-www-form-urlencoded","Cookie":"cookiesort=7;
Hm_lvt_5ac259f575081df787744e91bb73f04e=1563974376,1564218809; Hm_lpvt_5ac259f575081df787744e91bb73f04e=1564226330",'Host': 'www.shufazidian.com'}data = {'wd' : word,'sort': 7}r = requests.post(url, headers= headers,data= data) # post请求r.raise_for_status() #自动解析网页编码r.encoding = r.apparent_encodingreturn r.contentexcept:return ""

此函数主要用于获取网页html信息,其中的headers中包含的是构造爬虫的请求头,data中包含的是在用requests库进行爬虫时提交的post表单信息。

data = {
‘wd’ : word,
‘sort’: 7
}

通过分析网页可以得出,草书的post表单请求,草书对应的打代码的标签为“7”,而且所搜的字体会传输到data的“wd”中,故构造data表单请求并将word字体的数据传送到,“wd”中。

然后调用我们的requests库进行爬取信息,将信息返回,用requests库中的content方法即可。

2.parse_page(html)函数
def parse_page(html):soup = BeautifulSoup(html ,"lxml")      #解析网页pics = soup.find_all(class_="mbpho")    #获得图片所在的标签pic_link = list()name = list()for i in range(1,len(pics)):pic = pics[i].find(name="a").find(name="img")["src"]    #获得图片的链接并存入列表pic_link.append(pic)title = pics[i].find(name="a")["title"] #获得图片的作者并存入列表name.append(title)pic_dic = dict(zip(pic_link,name))  #构造图片和作者一一对应的字典return pic_dic

此函数的功能是调用BeautifulSoup库解析网页内容,由上图内容可以看出,我们所要获取的内容都包含在一个class=”b=mbpho”的标签里,其中href中包含的是图片的的链接,title的内容是图片的人名。所以,首先构造BeautifulSoup的实例对象soup,将html传入函数,并用lxml解析器解析,然后调用BeautifulSoup中的find_all方法进行信息的搜查和提取,并将所获得的图片链接以及图片名字存入列表,最后调用的zip()方法,构造字典将图片链接和图片的人名一一对应并返回字典。

3.to_file(url,word)函数
def to_file(url,word):if not os.path.exists("E://shufa"): #创建书法目录os.mkdir("E://shufa")path = "E://shufa//"+word   #创建搜索图片目录if not os.path.exists(path):os.mkdir(path)os.chdir(path)              #改变当前工作目录到pathhtml = get_page(url, word)  #获得网页的htmlpic_dic = parse_page(html)  #解析网页html,返回图片链接和图片作者对应的字典header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0)like Gecko Core/1.70.3704.400 QQBrowser/10.4.3587.400","Cookie": "cookiesort=7; Hm_lvt_5ac259f575081df787744e91bb73f04e=1563974376,1564218809; Hm_lpvt_5ac259f575081df787744e91bb73f04e=1564226330"}for item in pic_dic:#url = itemtry:response = requests.get(item, headers=header)#获取图片链接if response.status_code == 200:open(pic_dic.get(item) + ".jpg", 'wb').write(response.content)print("{} 保存成功".format(pic_dic.get(item)))except:return ''

to_file()函数主要是调用os库创建书法的目录并按要求保存图片,创建书法目录然后按照汉字创建汉字目录,将图片添加进去。重要的还是要再次调用requests库的get方法爬取图片,由于之前已经解析出了图片的链接,所以我们只需要将之前把保存图片的字典遍历,并将图片的链接传入get方法中即可。

4.main()函数
def main ():url = "http://www.shufazidian.com/"words = ["刘","陶","林","张","任","爱","你","我","草",“书”]for word in words:to_file(url,word)

在主函数里主要是调用to_file()函数,,将url 和 word 参数传入函数中,便可以实现对书法网站的图片抓取。

效果展示


源代码
https://blog.csdn.net/lucklydog123/article/details/100547650

爬虫练手——爬取草书网站的草书字体图片相关推荐

  1. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  4. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. 2021-08-07 Python-爬虫练手:爬取上千张动漫卡通头像

    爬取上千张卡通头像 思路实现 一级页面 二级页面 try-except 保存 完整程序 代码 ualist 记得关闭请求 成品欣赏 这两天在学算法,昨天感觉力扣的头像不好看,刚好有两天没碰爬虫了,就百 ...

  6. 爬虫之selenium爬取斗鱼网站

    爬虫之selenium爬取斗鱼网站 示例代码: from selenium import webdriver import timeclass Douyu(object):def __init__(s ...

  7. 使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站

    使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站 本次测试案例参考厦门大学数据库实验室 链接: https://dblab.xmu.edu.cn/blog/3937/ 在PyCharm中新建 ...

  8. python3.6爬虫案例:爬取某网站所有PPT(上)。

    写在前面   这次实现之前的flag:爬取第一ppt网站的所有PPT,当然网站中有其他很多的学习资料,这次只爬取PPT.不仅可以平时做模板演示用,还可以练习爬虫,岂不美滋滋.闲话不多说,进入正题. 先 ...

  9. 爬取书法网站的草书图片

    爬取书法网站的草书图片 书法网站的链接为http://www.shufazidian.com/ import requests from bs4 import BeautifulSoup import ...

最新文章

  1. nginx+tomcat,http强制跳转https后的error_page配置!【原创】
  2. 推荐:解析“extern”
  3. 2019年度最受欢迎中国开源软件评选, 请给JeecgBoot 投票,谢谢支持
  4. 魔兽世界3.35+mysql_最新魔兽世界3.35兔子王版本商业一键启动服务端+启动教程
  5. 定位首款弹幕K歌软件 阿里鲸鸣未来究竟能够走多远?
  6. 数字化转型进行时 | 区块链赋能政务数字化研讨会在零数科技举办
  7. java 的德鲁伊连接池_德鲁伊连接池-Druid
  8. 5.14.1.14 LBA Status Information
  9. 996工作制该取消吗?
  10. HTML期末大学生网页设计作业 (我的家乡南京介绍网站制作)
  11. LevelDB整体介绍
  12. html中onfocus和onblur的使用
  13. 洛谷P1796 汤姆斯的天堂梦【DP-数字三角形模型】【橙】
  14. 串流直播流媒体视频发布平台功能模块和产品技术参数
  15. 【六】Python全栈之路--for循环
  16. c语言字母从小到大,C语言编程:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。...
  17. 怎样恢复回收站中已被删除的文件
  18. 小学计算机集体备课活动记录,小学科学集体备课活动记录
  19. 四十三、迎接挑战,苦练内功,迎接春天的到来
  20. 模型驱动的开发解决方案支撑工具的总结

热门文章

  1. 16秋南开计算机应用答案,南开大学16秋学期《计算机应用基础》在线作业.doc
  2. antd tree 动态添加_推荐三款动态壁纸软件,足够让你的桌面惊艳!
  3. 什么是Kubernetes? 一文了解K8s是什么_红帽
  4. 名著推荐 - 供大学生提高科学人文素养的60部西学名著
  5. 适用于Mac的USB网络共享驱动程序(手机mac双向usb共享网络)
  6. Cocos2d-x 手游聊天系统Demo实现(Lua实现)
  7. ENVI:如何对自带GLT表的图像进行几何校正?
  8. BUG越改越多?微信团队用自动化测试化险为夷
  9. chatgpt赋能Python-python2张图片合成1张图片
  10. 华为matebook13,win10+deepin15.11双系统共用微软蓝牙鼠标