推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》

这篇具有很好参考价值的文章主要介绍了推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

老规矩,文末有送书的规则~~

零:前言

在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。

一、进程和线程

进程可以理解为是正在运行的程序的实例。进程是拥有资源的独立单位,而线程不是独立的单位。由于每一次调度进程的开销比较大,为此才引入的线程。一个进程可以拥有多个线程,一个进程中可以同时存在多个线程,这些线程共享该进程的资源,线程的切换消耗是很小的。因此在操作系统中引入进程的目的是更好地使多道程序并发执行,提高资源利用率和系统吞吐量;而引入线程的目的则是减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

下面用简单的例子进行描述,打开本地计算机的”任务管理器”如图1所示,这些正在运行的程序叫作进程。如果将一个进程比喻成一个工作,指定10个人来做这份工作,这10个人就是10个线程。因此,在一定的范围内,多线程效率比单线程效率更高。

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

二、Python中的多线程与单线程

在我们平时学习的过程中,使用的主要是单线程爬虫。一般来说,如果爬取的资源不是特别大,使用单线程即可。在Python中,默认情况下是单线程的,简单理解为:代码是按顺序依次运行的,比如先运行第一行代码,再运行第二行,依次类推。在前面章节所学习知识中,都是以单线程的形式实践的。

举个例子,批量下载某网站的图片,由于下载图片是一个耗时的操作,如果依然采用单线程的方式下载,那么效率就会特别低,意味着需要消耗更多的时间等待下载。为了节约时间,这时候我们就可以考虑使用多线程的方式来下载图片。

threading模块是Python中专门用来做多线程编程的模块,它对thread进行了封装,使用更加方便。例如需要对写代码和玩游戏两个事件使用多线程进行,案例代码如下。

import threading
import time
# 定义第一个
def coding():
    for x in range(3):
        print('%s正在写代码\n' % x)
        time.sleep(1)
# 定义第二个
def playing():
    for x in range(3):
        print('%s正在玩游戏\n' % x)
        time.sleep(1)
# 如果使用多线程执行
def multi_thread():
    start = time.time()
    #  Thread创建第一个线程,target参数为函数命
    t1 = threading.Thread(target=coding)
    t1.start()  # 启动线程
    # 创建第二个线程
    t2 = threading.Thread(target=playing)
    t2.start()
    # join是确保thread子线程执行完毕后才能执行下一个线程
    t1.join()
    t2.join()
    end = time.time()
    running_time = end - start  
    print('总共运行时间 : %.5f 秒' % running_time)
# 执行
if __name__ == '__main__':
    multi_thread()  # 执行单线程

运行结果如图所示。

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

那么执行单线程会消耗多少时间,案例代码如下所示。

import time
# 定义第一个
def coding():
    for x in range(3):
        print('%s正在写代码\n' % x)
        time.sleep(1)
# 定义第二个
def playing():
    start = time.time()
    for x in range(3):
        print('%s正在玩游戏\n' % x)
        time.sleep(1)
    end = time.time()
    running_time = end - start
    print('总共运行时间 : %.5f 秒' % running_time)
def single_thread():
    coding()
    playing()
# 执行
if __name__ == '__main__':
    single_thread()  # 执行单线程

运行结果如图3所示。

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

经过以上多线程和单线程的运行结果,可以看出多线程中写代码和玩游戏是一起执行的,单线程中则是先写代码再玩游戏。从时间上来说,可能只有细微的差距,当执行工作量很大的时候,便会发现多线程消耗的时间会更少,从这个案例中我们也可以知道,当所需要执行的任务并不多的时候,只需要编写单线程即可。

三、单线程改为多线程

以某直播的图片爬取为例,案例代码如下。

import requests
from lxml import etree
import time
import os

dirpath = '图片/'
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 data

def 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()

如果需要修改为多线程爬虫,只需要修改主函数即可,例如创建4个线程进行爬取,案例代码如下所示。

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("全部完成!")  # 主程序

四、图书推荐

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基础知识,然后介绍了urllib、Requests请求库以及XPath、Beautiful Soup等解析库,接着介绍了selenium对动态网站的爬取和Scrapy爬虫框架,最后介绍了Linux基础,便于读者自主部署编写好的爬虫脚本。

本书主要面向对网络爬虫感兴趣的初学者。

大咖推荐
推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

作者介绍

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

内容结构及配套资源

推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》,好书收藏,爬虫,python,开发语言

五、粉丝福利

回馈粉丝们的支持,送《Pyhton网络爬虫从入门到实战》实体书给3位粉丝。一起学习!

福利0

虚竹哥直接送1本好书,参与好评送书~

参与好评送书:随机抽取1位幸运读者,送一本《Pyhton网络爬虫从入门到实战》实体书

统计截止时间:2023/09/19 19:00:00

请中奖的读者统计截止时间过后7天内私信虚竹哥收货地址,过期奖励作废哈!

福利1

来虚竹哥公众号的同标题文章,参与好评送书~~(新号,参与人不多,中奖概率很高)
公众号 :传送门–》
公众号 :传送门–》
公众号 :传送门–》
参与好评送书:随机抽取2位幸运读者,各送一本《Pyhton网络爬虫从入门到实战》实体书

统计截止时间:2023/09/19 19:00:00
请中奖的读者统计截止时间过后7天内私信虚竹哥收货地址,过期奖励作废哈!

我是宠粉的虚竹哥,请继续支持我,哈哈哈~文章来源地址https://www.toymoban.com/news/detail-725296.html

到了这里,关于推荐源哥和川川的新书:《Pyhton网络爬虫从入门到实战》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 硬件产品经理:从入门到精通(新书发布)

    目录 简介 新书 框架内容 相关课程 在完成多款硬件产品从设计到推向市场的过程后。 笔者于2020年开始 在产品领域平台 输出硬件相关的内容。 在这个过程中 经常会收到很多 读者的留言, 希望 能 推荐一些硬件相关 的 书籍或资料。   其实, 笔者 刚开始做硬件产品时 ,也

    2024年02月12日
    浏览(34)
  • 新书速览|Kubernetes从入门到DevOps企业应用实战

    从0到1,从零开始全面精通Kubernetes,助力企业DevOps应用实践 本书内容 《Kubernetes从入门到DevOps企业应用实战》以实战为主,内容涵盖容器技术、Kubernetes核心资源以及基于Kubernetes的企业级实践。从容器基础知识开始,由浅入深,阐述Kubernetes各个方面的知识,并提供大量实际项

    2024年02月22日
    浏览(42)
  • 网络安全入门书籍推荐

    计算机网络 网络安全,计算机网络肯定是非常重要的存在。作为基础阶段,这一小节主要从宏观上学习计算机网络,而不是死扣某一个协议的某些字段意义。 首先从局域网出发,了解计算机通信的基本网络——以太网,局域网内是如何通信的?集线器、交换机有什么区别?

    2024年02月02日
    浏览(48)
  • 【Pyhton入门系列】第十三篇:Python自动化测试和单元测试

    自动化测试是软件开发中不可或缺的一部分,它可以提高软件质量、减少人工测试工作量,并确保代码的稳定性。Python作为一种简洁而强大的编程语言,提供了丰富的测试框架和工具,使得自动化测试和单元测试变得更加容易。 自动化测试是指使用脚本或工具来执行测试任务

    2024年02月12日
    浏览(53)
  • 【推荐】网络安全10本入门必看书籍

    对于初学者来说,了解网络安全的入门知识是非常重要的。以下是我推荐的10本入门网络安全必看的书籍 作者:余洪涛,出版社:清华大学出版社 这本书是网络安全初学者入门的好选择。书中讲解了黑客攻击和防御的基本知识和技术,包括端口扫描、漏洞利用、木马病毒、网

    2024年02月13日
    浏览(66)
  • 网络爬虫入门导学

    一、内容组织 2、常用的python IDE工具  比较推荐以下几种: 其中IDLE是python自带的/默认的/常用的/入门级编写工具,包含交互式和文件式 适用于:简单直接/入门级/代码不超过300行 Sublime Text是专为程序员开发的第三方专用编程工具,工具不注册时免费使用,免费版本和收费版

    2024年02月07日
    浏览(38)
  • 网络爬虫-Requests库入门

    一、Requests库的安装 以管理员身份运行命令控制台,输入  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 测试:打开IDLE 此时百度的html页面被抓取成功 二、requests库的7个主要方法 三、Requests库的get()方法:获得一个网页 完整使用方法: Requests库的get()方法源代码:get方法

    2024年02月08日
    浏览(38)
  • Python 网络爬虫入门详解

    什么是网络爬虫          网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。 优先申明:我们使用的python编译环境为PyCharm 一、首先一个网

    2024年01月17日
    浏览(46)
  • Python网络爬虫入门到实战

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 网络爬虫(Web Scraping)是一种自动化从网页上获取信息的技术,它通过模拟浏览器

    2024年02月12日
    浏览(48)
  • 17.网络爬虫—Scrapy入门与实战

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。 🧾 🧾第八篇文章《8

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包