首先堆糖网是一个美图壁纸兴趣社区,有大量的美女图片
今天咱们实现搜索关键字爬取堆糖网上相关的美图。
固然咱们还能够实现多线程爬虫,加快爬虫爬取速度
html
值得注意的是url当中是不能有汉字的,因此真正的url是这样的:python
https://www.duitang.com/search/?kw=美女&type=feed
思路:json
import urllib.parse label = '美女' label = urllib.parse.quote(label) # 输出:%E7%BE%8E%E5%A5%B3
首先,这个网站的数据是瀑布流式的加载方式。api
瀑布流举例说明:你去一个饭店,直接开口要十碗烩面,这个时候老板开始下面给你吃😏。而后你发现当你吃完第一碗面,你就吃不下了。这个时候,剩下的面就算白作了。因此,下次你在去饭店,仍是直接开口要十碗面,这时,老板聪明了,下一碗面,你吃一碗,你还须要,就在去下面。这样就不会浪费。浏览器
针对这种数据加载,须要抓包:
服务器
import urllib.parse import json import requests import jsonpath
we_data = requests.get(url).text
由于是json文件,因此直接用jsonpath工具提取数据多线程
# 类型转换 html = json.loads(we_data) photo = jsonpath.jsonpath(html,"$..path") print(photo)
获得图片的连接工具
num = 0 for i in photo: a = requests.get(i) with open(r'tupian\{}.jpg'.format(num),'wb') as f: # content 二进制流 f.write(a.content) num += 1
因此,以此为动力,又实现了翻页,下面是简单的所有代码(代码为了零基础小白看懂,大神勿喷)jsonp
import urllib.parse import json import requests import jsonpath url = 'https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}' label = '美女' # 关键字 label = urllib.parse.quote(label) num = 0 # 翻页 24的间隔 for index in range(0,2400,24): u = url.format(label,index) we_data = requests.get(u).text html = json.loads(we_data) photo = jsonpath.jsonpath(html,"$..path") # 遍历每页的图片连接 for i in photo: a = requests.get(i) # wb 二进制写入 with open(r'tupian\{}.jpg'.format(num),'wb') as f: # content 二进制流 f.write(a.content) num +=1
PS:
问题能够评论区提出
网站