requests+selenium+pyquery+threading实现LOL所有装备图片爬取保存
2020-07-04 19:16
746 查看
注意:
- chrome的chromedriver.exe文件需要和代码放在同一路径下,有了chromedriver才能使用selenium驱动浏览器,根据浏览器版本,在http://npm.taobao.org/mirrors/chromedriver/下载chromedriver
- 本环境为python3.5版本之后,需要安装好pyquery、selenium、requests模块
pip install pyquery pip install requests pip install selenium
话不多说,上代码,对应的关键位置我都注释了。
# coding=utf-8 import requests from threading import Thread from pyquery import PyQuery as pq from selenium import webdriver import time # 利用pyquery解析网页标签,获取需要的装备名字,以及img src地址 def get(): driver = webdriver.Chrome() driver.get(url) driver.implicitly_wait(10) doc = pq(driver.page_source) # 使用selenium加载获取网页的源码,使用requests是无法直接获取得到装备的标签的 lis = doc("#jSearchItemDiv li") for li in lis.items(): imgsrc = li('img').attr('src') # 装备图片的url地址 name = li('p').text() # 装备的名称 yield {'imgsrc': imgsrc, 'name': name} time.sleep(5) driver.close() # 保存图片到当前路径,需要以‘wb’模式新建文件,写入获取的流数据res.content def save_pic(data): with open(r'.\%s.png' % data.get('name'), 'wb') as f: # 定义保存格式,装备名+.png try: res = requests.get(data.get('imgsrc'), headers=headers) content = res.content f.write(content) print('%s 保存完成.....' % data.get('name')) except Exception as e: print(e) # 多线程运行函数,其实用不用多线程都很快,毕竟数据很小 def run(): datas = get() tasks = [Thread(target=save_pic, args=(data, )) for data in datas] for t in tasks: t.start() for t in tasks: t.join() if __name__ == '__main__': headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)"} url = "https://lol.newyx.net/data/item/" run()
最终保存效果:图片太多,只截图部分…
喜欢的新手小伙伴可以拿去玩一下…
相关文章推荐
- Selenium实现右键保存图片(Java)
- Python selenium+AutoIt 实现自动获取网页内Flash窗口中的信息,以图片的方式保存
- [分享黑科技]纯js突破localstorage存储上线,远程抓取图片,并转码base64保存本地,最终实现整个网站所有静态资源离线到用户手机效果却不依赖浏览器的缓存机制,单页应用最新黑科技
- Python+selenium实现截图图片并保存截取的图片
- Android图片浏览模式以及图片保存的实现
- Android 保存图片到系统图库 -- 利用 “系统保存屏幕截图” 的方法实现
- 修改FCKEditor实现将图片、文件等保存到数据库
- Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边
- 保存中其他对象不变,删除数据库中所有数据的实现方法
- php+jquery+Jcrop实现上传-截取-保存图片功能
- Android 保存资源文件中的图片到本地相册,并实时刷新的实现方法!
- TImage组件实现保存图片到Stream
- AndEngine实现屏幕截取和图片保存
- python批量修改图片尺寸,并保存指定路径的实现方法
- Android实现下载图片并保存到SD卡中
- Unity3d-WWW实现图片资源显示以及保存和本地加载
- iphone把图片保存到“照片”功能实现
- requests爬取图片保存--记录
- Android实现获取手机里面的所有图片
- Android实现获取本机中所有图片