今天初步了解了多线程,线程池等概念,找以前的网站试试手!
<font color=#999AAA >
import requests
from lxml import etree
from multiprocessing.dummy import Pool
url = 'https://www.52dmtp.com/pcwallpaper/index_15.html'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
start=time.time()
#封装函数
def func(url){
# 发起请求获得数据
response = requests.get(url=url,headers=headers).text
# 树化处理返回的数据
tree = etree.HTML(response)
# 定位查找li列表
li_list = tree.xpath('//div[@class="w1200 r content"]/ul/li')
print(li_list)
# 循环读取列表中每一条li
for li in li_list:
data = li.xpath('./div/a/img/@src')[0]
name = li.xpath('./div/a/img/@alt')[0]
# 遇到乱码就用这个转换
name = name.encode('iso-8859-1').decode('utf-8')
# 由于有的名字太长了,所以弄短一点
name = name[0:10]+'.jpg'
a = requests.get(url=data,headers=headers).content
with open(name,'w') as fp:
fp.write(a)
}
#这个地方要创建一个人物列表
renwu_list=[填入要下载的url]
#初始化一个线性池
pool=pool(2)
#把url传入
pool.map(func,renwu_list)
#调用函数,括号里填入需要的url
func()
func()
#计算一下时间
end=time.time()
print("用时"+str(end-start))
(因为网络问题具体的网址就没有填进去)
今天出了一个问题是with open( ‘./bc.png’,‘wb’,,encoding=‘utf-8’) as zp: 不需要,encoding=‘utf-8’,不是所有东西都要解码,那什么时候需要解码呢?下面是我搜到的
计算机只认识二进制(或者说字节),所以我们需要把人能识别的文字(字符串)转换成字节串,也就是encode过程。
相应地,从字节串到字符串,就是decode过程。
在这个快节奏的时代,大篇幅的文章让人看起来就比较烦,枯燥的像高数课本一样难以产生兴趣,在学技术的同时慢慢练习一下自己的文笔!明天见! 不 今天早上见!