一个汉字的爬虫

搬瓦工机场JMS

前天查一个字,发现杜娘的汉字居然有gif动画,按笔画顺序一笔一画的写出来,于是乎…..

然后搜了下发现果真有大佬已经造好了车轮,现在分享一下

大佬是cnblogs的 FreeSaber – 编程道路千千万,为何非要选全栈?

用PY3写的,10秒一个,跑了9个小时左右

hanzi.py.ini(21.6 KB, 下载次数: 65)

昨天 21:45 上传

点击文件名下载附件
py3

啊.gif(85.93 KB, 下载次数: 0)

昨天 21:46 上传

点击文件名下载附件

云南网友:厉害厉害
山东网友:这年代什么都能爬呀哈哈哈666
贵州网友:看了一下,可能是sleep设置的太长才这么慢,这个笔画应该是通过:https://hanyu.baidu.com/zici/s?wd=x网页爬取的,很好爬
澳门网友:怕IP被封,所以时间长一点
西藏网友:后面还有水印啊~
甘肃网友:感觉这个站的质量高点 bishun.strokeorder.info
广东网友:大佬去水印
黑龙江网友:这个可以
广东网友:这种水印很好去啊, 像素颜色等于那个的直接替换成白色即可…
重庆网友:这种水印很好去啊, 像素颜色等于那个的直接替换成白色即可…
广东网友:中途被拉去开会了,给一个异步的实现方案

  1. # -!- coding: utf-8 -!-
  2. import re
  3. import time
  4. import asyncio
  5. import aiohttp
  6. URL_FORMAT = "http://hanyu.baidu.com/s?wd={charset}&ptype=zici"
  7. FILENAME_FORMAT = "{charset}.gif"
  8. async def fetch(session, url, text=True):
  9.     # HTTP 访问 URL
  10.     async with session.get(url) as response:
  11.         return (await response.text()) if text else (await response.content.read())
  12. async def file_url(charset):
  13.     # 获得 GIF 文件 URL
  14.     async with aiohttp.ClientSession() as session:
  15.         html = await fetch(session=session, url=URL_FORMAT.format(charset=charset))
  16.     return re.compile(r”’data-gif="(.+?\.gif)"”’).findall(html) or None
  17. async def downloader(url):
  18.     async with aiohttp.ClientSession() as session:
  19.         return await fetch(session=session, url=url, text=False)
  20. def save(filename, content):
  21.     with open(file=filename, mode="wb") as f:
  22.         f.write(content)
  23. async def main(charset):
  24.     res = await file_url(charset)
  25.     if not isinstance(res, type(None)):
  26.         _file_url = res[0]
  27.     content = await downloader(url=_file_url)
  28.     save(filename=FILENAME_FORMAT.format(charset=charset), content=content)
  29. if __name__ == "__main__":
  30.     charsets = ["一", "二", "三"]
  31.     loop = asyncio.get_event_loop()
  32.     tasks = [asyncio.ensure_future(main(charset)) for charset in charsets]
  33.     tasks = asyncio.gather(*tasks)
  34.     loop.run_until_complete(tasks)

复制代码

未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 一个汉字的爬虫

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏