注意:
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()最终保存效果:图片太多,只截图部分…
喜欢的新手小伙伴可以拿去玩一下…
