在图片网站爬取图片时候,我们需要取得具体每张图片的url地址,然后下载到电脑保存下来。这其中,对时间消耗最多的步骤是保存图片到本地硬盘,机械硬盘的读写性能速度较慢。如果采取单线程单进程的话,在读写的同时没法进行其他的操作,只能等待,浪费了性能。
对单个存有图片的页面而言,如果可以采取多线程的话,在写入图片的同时还能去请求新的图片地址保存到列表将会更合理的利用时间。因为图片网站,图片存放在很多页面里,所以对多个存有图片的页面而言采取 多进程,同时对多个有图片的页面进行爬取任务。
至于你要爬取什么样的图片网站, 我不得而知,不同网站展示图片界面不同或许与我的有差异但主体思路就这样。
接下来上代码:
import requests ,time,threading
from lxml.html import etree
from fake_useragent import UserAgent
from multiprocessing import Pool
#得到自己爬取页网址
def get_Url(P):
Url='保密'.format(P)
return Url
#得到10个尤物的名字
def get_names(Url):
all_names=[]
header = {
'User-Agent': UserAgent().chrome}
response = requests.get(url=Url, headers=header)
response.encoding = 'GB18030'
e = etree.HTML(response.text)
picture_name = e.xpath('//h2/a')
for k in range(10):
all_names.append(picture_name[k].text)
return all_names
#得到第i个尤物的名字 i 0 9
def get_i_name(all_names,i):
i_name=all_names[i]
return i_name
#得到10个尤物的首网址
def get_url(Url):
all_urls=[]
header = {
'User-Agent' : UserAgent().chrome