python3网络爬虫:爬取堆糖照片
生活随笔
收集整理的這篇文章主要介紹了
python3网络爬虫:爬取堆糖照片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
首先對頁面進行點擊分析,查看如片,分析url.
# -*- coding: utf-8 -*-import requests import threading import urllib.parse#設置最大線程 開啟10個線程就鎖住 thread_lock = threading.BoundedSemaphore(value=10)'https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=100' #通過url 獲取數據 #單個頁面 def get_page(url):#requests.get 自帶了json.loadspage = requests.get(url)#提取需要的contentpage = page.content# 將bytes轉成 字符串page = page.decode('utf-8')return page#label為關鍵字 #取所有頁面pages的鏈接 def pages_from_duitang(label):pages = []url = 'https://www.duitang.com/napi/blog/list/by_search/?kw={}&type=feed&start={}&limt=100'#將中文轉成url編碼label = urllib.parse.quote(label)for index in range(0, 110, 20):#將這兩個變量替換占位符{}u = url.format(label,index)page = get_page(u)pages.append(page)return pages# print(get_page('https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000')) #page是get_page()返回的頁面信息 #startpart和endpart是邊界條件,兩個給定的字符串 # 單個頁面的對象,startpart 所要匹配字符1,匹配的字符2 def findall_in_page(page,startpart,endpart):print(page)all_strings = []end = 0# 從end這個字符串開始找,找startpart# .find()!=-1說明找到該字符串,返回的是該字符串的起始下標while page.find(startpart,end) != -1:# 需要的圖片的鏈接的起始位置startstart = page.find(startpart, end)+len(startpart)# 從起始字符串開始找結束字符串end = page.find(endpart,start)#切片 取兩個所要匹配字符 之間的部分也就是圖片urlstring = page[start:end]#存入列表all_strings.append(string)return all_strings# "path": "https://b-ssl.duitang.com/uploads/item/201708/20/20170820215827_fa483.jpeg" def pic_urls_from_pages(pages):pic_urls = []for page in pages:# 處理一個頁面urls = findall_in_page(page,'path":"','"')print(urls)pic_urls.extend(urls) # 合并列表return pic_urlsdef download_pics(url, n):r = requests.get(url)path = '../pics' + str(n) + '.jpg'with open(path,'wb') as f:f.write(r.content)#下載完了,解鎖 thread_lock.release()def main(label):pages = pages_from_duitang(label)print(pages)pic_urls = pic_urls_from_pages(pages)n = 0for url in pic_urls:n += 1print('正在下載第{}張圖片'.format(n))#上鎖thread_lock.acquire()#下載 這個方法丟進線程池t = threading.Thread(target=download_pics,args=(url,n))t.start()main('校花')總結
以上是生活随笔為你收集整理的python3网络爬虫:爬取堆糖照片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i3 1215U 和 i5 1235U选
- 下一篇: python中的阶乘,python中阶乘