前天查一个字,发现杜娘的汉字居然有gif动画,按笔画顺序一笔一画的写出来,于是乎…..
然后搜了下发现果真有大佬已经造好了车轮,现在分享一下
大佬是cnblogs的 FreeSaber – 编程道路千千万,为何非要选全栈?
用PY3写的,10秒一个,跑了9个小时左右
hanzi.py.ini(21.6 KB, 下载次数: 65)
啊.gif(85.93 KB, 下载次数: 0)
云南网友:厉害厉害
山东网友:这年代什么都能爬呀哈哈哈666
贵州网友:看了一下,可能是sleep设置的太长才这么慢,这个笔画应该是通过:https://hanyu.baidu.com/zici/s?wd=x网页爬取的,很好爬
澳门网友:怕IP被封,所以时间长一点
西藏网友:后面还有水印啊~
甘肃网友:感觉这个站的质量高点 bishun.strokeorder.info
广东网友:大佬去水印
黑龙江网友:这个可以
广东网友:这种水印很好去啊, 像素颜色等于那个的直接替换成白色即可…
重庆网友:这种水印很好去啊, 像素颜色等于那个的直接替换成白色即可…
广东网友:中途被拉去开会了,给一个异步的实现方案
- # -!- coding: utf-8 -!-
- import re
- import time
- import asyncio
- import aiohttp
- URL_FORMAT = "http://hanyu.baidu.com/s?wd={charset}&ptype=zici"
- FILENAME_FORMAT = "{charset}.gif"
- async def fetch(session, url, text=True):
- # HTTP 访问 URL
- async with session.get(url) as response:
- return (await response.text()) if text else (await response.content.read())
- async def file_url(charset):
- # 获得 GIF 文件 URL
- async with aiohttp.ClientSession() as session:
- html = await fetch(session=session, url=URL_FORMAT.format(charset=charset))
- return re.compile(r”’data-gif="(.+?\.gif)"”’).findall(html) or None
- async def downloader(url):
- async with aiohttp.ClientSession() as session:
- return await fetch(session=session, url=url, text=False)
- def save(filename, content):
- with open(file=filename, mode="wb") as f:
- f.write(content)
- async def main(charset):
- res = await file_url(charset)
- if not isinstance(res, type(None)):
- _file_url = res[0]
- content = await downloader(url=_file_url)
- save(filename=FILENAME_FORMAT.format(charset=charset), content=content)
- if __name__ == "__main__":
- charsets = ["一", "二", "三"]
- loop = asyncio.get_event_loop()
- tasks = [asyncio.ensure_future(main(charset)) for charset in charsets]
- tasks = asyncio.gather(*tasks)
- loop.run_until_complete(tasks)
复制代码
未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 一个汉字的爬虫