锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

线程池和进程池(10)——批量获取图片(1)

时间:2023-09-09 21:07:02 whj1精密电位器精密电位器whj1

目录

1 多线程和多进程

2XPath返回空列表问题


1 多线程和多进程

多过程和多线程是实现多任务的两种常用方法。

(9)_WHJ226的博客-CSDN博客

在这篇博文中,我们用以下方法获取刘亦菲的两张图片,但这两张图片对我们来说是完全不够的。

import requests from threading import Thread def func(name):     body #函数体,可以是爬虫,该函数类似于请求-响应-保存数据  if __name__ == "__main__":     #线程1     t1 = Thread(target=func,args=(name,))#传输参数必须是元组     t1.start()     #线程2     t2 = Thread(target=func, args=(name,))     t2.start()

因此,我们需要改进方法。

例如:

#线程池 from concurrent.futures import ThreadPoolExecutor  def fn(name):     for i in range(1000):         print(name,i)  if __name__ == "__main__":     # 创建一个由50个线程组成的线程池     with ThreadPoolExecutor(50) as t:         for i in range(100):             t.submit(fn,name=f"线程{i}")     #等待线程池中的所有任务完成后再继续执行     print("123")

一般模板如下:

#1.提取单页数据 #2.使用线程池 import requests from lxml import etree from concurrent.futures import ThreadPoolExecutor   def download_one_page(url):     header = {         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'     }     resp = requests.get(url=url, headers=header)     html = etree.HTML(resp.text)     urls = html.xpath(xpath) #xpath为了获取图片下载地址xpath     path = 'E:/PHOTO/' #指定路径     #拿到每个url     for url in urls:         response = requests.get(url=url, headers=header)  # 在此发送新的请求         title = url[m:n] '.jpg' ##下载图片指示文件名称         with open(path   title, 'wb') as f:             f.write(response.content)         print("下载成功"   name)         time.sleep(2)     response.close()  if __name__ == "__main__":     #for i in range(1,24):#第一种方法         #download_one_page(f"http://www.baidu.com_{i}")#该方法为单线程,效率低下     with ThreadPoolExecutor(5) as t:#第二种方法,改变值5可以改变速度         for i in range(1, 100):             t.submit(download_one_page,"http://www.baidu.com_{i}")

2XPath返回空列表问题

如何使用这个模板,下面教你批量获取仙女姐姐的图片,怎么说,食色?性也(分开玩,审核应该能够通过)。

分析网页结构的第一步:

存储图片的地址:

解析XPath,并获取请求头、请求方式等信息:

获取XPath之后,根据模板编写代码。运行后返回的内容是空的。原因是我们获得的图片下载地址是空的,所以我们可以找到原因。排除了tbody(Python用xpath爬数据返回空列表 python关于使用的爬虫xpath写爬虫得不到内容, 获取空列表的解决方案_一生所爱的博客-CSDN博客_xpath返回空列表

爬虫使用xpath回到空中进行分析,无法获得相应元素的原因和解决方案_小鱼干儿博客-CSDN博客_xpath返回值为空),注释代码的可能性(关于xpath获取数据为空的原因_FRANCISHUI的博客-CSDN博客_xpath为空后,原因就是requests只能获取网页的静态源代码,不能获得动态更新的内容。动态更新的内容应使用selenium 来爬取(http://t.csdn.cn/Ebs7i?spm=1005.2026.3001.5703。或者是通过F12控制台分析页面数据加载链接,找到真正的链接json爬取数据地址。点击页面上的右键,选择右键菜单 "查看网页源代码"。如果该网页的静态源代码中有您需要爬行的内容,则表示该页面没有动态内容,可以使用requests爬行。否则说明页面内容动态更新,需要使用selenium 来爬取.

爬虫入门(6)-反爬(2)_WHJ226的博客-CSDN博客

爬虫入门(7)-反爬(3)Selenium_WHJ226的博客-CSDN博客

爬虫入门(8)-反爬(4)Selenium_WHJ226的博客-CSDN博客

爬虫入门(9)-反爬(5)Selenium_WHJ226的博客-CSDN博客

爬虫入门(10)-反爬(6)Selenium_WHJ226的博客-CSDN博客

反爬系列在一步步讲解Selenium面对动态网页的数据捕获,自动化测试。Chrome浏览器驱动器配置,以及自动化测试的基本解释,将带您掌握动态网页的所有数据,以便您可以爬上您所看到的。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章