前言:
作为一个爱老婆的好男人,为女朋友做任何事去都是心甘情愿的,所以应我可爱的小仙女的要求写了一个爬堆糖的爬虫。
Duitang.py:
- 组件调用:requests,urllib.parse,threading
- 实现功能:先提供分析获取json链接及主要参数,再过滤出需要的图片(我没有使用字典的方法这里使用的是查找字符串方法),然后再通过图片链接提供提供下载。
#_*_coding:utf-8_*_ #by:linhut #time:2017/9/11 #www.linhut.cn # 'https://www.duitang.com/napi/blog/list/by_search/?kw=可爱仓鼠夫妇表情包%start=0&limit=1000' #start是从第几张图片取 import requests import urllib.parse import threading # 设置最大线程锁 thread_lock = threading.BoundedSemaphore(value=10) #通过 url 获取到json数据 def get_page(url): # requests.get 自带 json.loads page = requests.get(url) page = page.content #将 bytes 转成字符串 page = page.decode('utf-8') return page #取json数据链接 def pages_from_duitang(label): pages = [] url = 'https://www.duitang.com/napi/blog/list/by_search/?kw={}%start={}&limit=1000' # 将中文转成url编码(会出现奇怪的广告跳转所以取消) #label = urllib.parse.quote(label) for index in range(0,36000,100): u = url.format(label,index) #传入链接中 print('----------------正在为你搜索关键词。。。。。') print("~ " + label + " ~") page = get_page(u) pages.append(page) return pages #查找字符串获取到图片链接方法 def findall_in_page(page,startpart,endpart): all_strings = [] end = 0 while page.find(startpart,end) != -1: #当找得到 start = page.find(startpart,end) + len(startpart) #从0开始找,len为长度 end = page.find(endpart,start) string = page[start:end] all_strings.append(string) return all_strings #得到图片地址 def pic_urls_from_pages(pages): pic_urls = [] for page in pages: urls = findall_in_page(page,'path":"','"') #取到图片地址 pic_urls.extend(urls) #接受列表参数并依次添加在后面 return pic_urls #下载图片 def download_pics(url,n): r = requests.get(url) path = 'fan/' + 'fan'+ str(n) + '.jpg' with open(path,'wb') as f: #w写入b数据类型 f.write(r.content) #下载完了解锁 thread_lock.release() #总函数,label为搜索关键词 def main(label): pages = pages_from_duitang(label) #得到json链接 pic_urls = pic_urls_from_pages(pages) #得到图片地址uan n = 0 for url in pic_urls: n += 1 print ('正在下载弟 {} 张图片'.format(n)) print ("--------------------------------------") # 上锁 thread_lock.acquire() t = threading.Thread(target=download_pics,args=(url,n)) t.start() main('可爱仓鼠夫妇表情包')
有爱心,坚持
咳咳~
好的
好想法
666,点个赞,有想法
额~ 不哭
要坚持,python写爬虫是个不错的工具。
现在用的最熟悉的就是爬虫了
dalao的操作
居然和我女朋友一样耶喜欢许嵩,打死…. 哈哈
你女朋友喜欢你居然不喜欢打屎
满满的秀恩爱
居然被你看出来了