Python依据单个关键词爬取百度图片
来源:互联网 发布:淘宝联盟 有效订单 编辑:程序博客网 时间:2024/06/05 06:24
最近由于工作需要要使用大量的水果蔬菜图片,故萌生使用爬虫抓取百度图片的想法,并未用于商业用途,只是为了测试数据。所以并未使用多线程、框架等技术。
由于百度图片是动态加载的,发现搜索关键词后action的参数很相似,故使用requests.get(url , params=)函数去获取内容。并正则提取到所有的图片链接,再将这些图片写入文件夹中。
开始和网上的资料中使用的获取json字符串,但是有些关键词会提示无法解析json,多次尝试后未果故放弃提取json改为正则匹配。
import requestsimport reimport osdef getIntPages(keyword, pages): params = [] for i in range(30, 30*pages+30, 30): params.append({ 'tn':'resultjson_com', 'ipn': 'rj', 'ct':'201326592', 'is': '', 'fp': 'result', 'queryWord': keyword, 'cl': '2', 'lm': '-1', 'ie': 'utf-8', 'oe': 'utf-8', 'st': '-1', 'ic': '0', 'word': keyword, 'face': '0', 'istype': '2', 'nc': '1', 'pn': i, 'rn': '30' }) url = 'https://image.baidu.com/search/acjson' urls = [] for i in params: content = requests.get(url, params=i).text img_urls = re.findall(r'"thumbURL":"(.*?)"', content)#正则获取方法 urls.append(img_urls) #urls.append(requests.get(url,params = i).json().get('data'))开始尝试的json提取方法 #print("%d times : " % x, img_urls) return urlsdef fetch_img(path,dataList): if not os.path.exists(path): os.mkdir(path) x = 0 for list in dataList: for i in list: print("=====downloading %d/1500=====" % (x + 1)) ir = requests.get(i) open(path + '%d.jpg' % x, 'wb').write(ir.content) x += 1if __name__ == '__main__': url = 'https://image.baidu.com/search/acjson' dataList = getIntPages('蔬菜', 50)#依据蔬菜关键词获取50页的图片列表,每页30张图片 fetch_img("vegetable/", dataList)#存取图片
该爬虫还有很多地方可以改进,如 :
1.多个关键词的搜索尝试
2.是否可以使用多线程框架提高抓取速度
阅读全文
0 0
- Python依据单个关键词爬取百度图片
- Python 爬取百度图片
- python爬取百度图片
- Python爬取百度图片
- python爬取百度图片
- Python 爬取百度图片
- Python爬取百度图片
- PYTHON爬虫——必应图片关键词爬取
- PYTHON爬虫——必应图片关键词爬取
- python爬取百度贴吧图片
- Python爬虫爬取百度图片
- python +requests 实现爬取百度图片
- python:爬取百度贴吧图片
- 使用python爬取百度图片
- python 3 爬取百度图片
- python 爬虫爬取百度图片
- Python爬取百度贴吧的图片
- selenium+python 爬取网络图片(2) -- 百度
- 安卓虚拟触控无需数据线
- linux下vi命令大全
- Glide系列之六:探究Glide的自定义模块功能
- #面试java基础总结大全#集合框架
- 第六章第六题 动态结构 不错
- Python依据单个关键词爬取百度图片
- MJrefresh,下拉以后弹不回去
- oracle pl/sql批量启用停用外键
- JavaScript函数练习
- 多个select下拉框,选中当前某一项,其他下拉框去掉选中的值
- ES6学习入门(一)babel
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found.
- git
- 你不知道的JS-读书笔记(四)--混合对象类