🌐Hello World !
『赠书活动 | 第十七期』
本期书籍:《Python网络爬虫:从入门到实战》
赠书规则:评论区:点赞|收藏|留言
评论区留言:"人生苦短,我用Java"
活动截止时间:8月21日
赠书数量:2
Tip:中奖后博主私信通知 | 三天内不回复将视为 | 自动放弃
书籍介绍
本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基础知识,然后介绍了urllib、Requests请求库以及XPath、Beautiful Soup等解析库,接着介绍了selenium对动态网站的爬取和Scrapy爬虫框架,最后介绍了Linux基础,便于读者自主部署编写好的爬虫脚本
进程和线程
进程可以理解为是正在运行的程序的实例。进程是拥有资源的独立单位,而线程不是独立的单位。由于每一次调度进程的开销比较大,为此才引入的线程。一个进程可以拥有多个线程,一个进程中可以同时存在多个线程,这些线程共享该进程的资源,线程的切换消耗是很小的。因此在操作系统中引入进程的目的是更好地使多道程序并发执行,提高资源利用率和系统吞吐量;而引入线程的目的则是减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能
单线程改为多线程
import requestsfrom lxml import etreeimport timeimport osdirpath = '图片/'if not os.path.exists(dirpath): os.mkdir(dirpath) # 创建文件夹header = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}def get_photo(): url = 'https://www.huya.com/g/4079/' # 目标网站 response = requests.get(url=url, headers=header) # 发送请求 data = etree.HTML(response.text) # 转化为html格式 return datadef jiexi(): data = get_photo() image_url = data.xpath('//a//img//@data-original') image_name = data.xpath('//a//img[@class="pic"]//@alt') for ur, name in zip(image_url, image_name): url = ur.replace('?imageview/4/0/w/338/h/190/blur/1', '') title = name + '.jpg' response = requests.get(url=url, headers=header) # 在此发送新的请求 with open(dirpath + title, 'wb') as f: f.write(response.content) print("下载成功" + name) time.sleep(2)if __name__ == '__main__': jiexi()
if __name__ == "__main__": threads = [] start = time.time() # 创建四个进程 for i in range(1, 5): thread = threading.Thread(target=jiexi(), args=(i,)) threads.append(thread) thread.start() for thread in threads: thread.join() end = time.time() running_time = end - start print('总共消耗时间 : %.5f 秒' % running_time) print("全部完成!") # 主程序
作者简介
内容结构及配套资源
抽奖时间:2023.8.21
公布方式:评论区公布,私信通知
🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——
点赞
👍收藏
⭐️评论
📝
来源地址:https://blog.csdn.net/weixin_62765017/article/details/132236446