程序技术好文:爬取煎蛋XXOO妹子图片

简介: 程序技术好文:爬取煎蛋XXOO妹子图片

"

今天回忆廖大的多线程的时候,看到下面有人写了个多线程的爬虫点进去看了下,分析的很仔细,写了接近200行代码吧

让后我就研究了一下这个网站,emmmm,selenium + PhantomJS不就直接搞定了嘛,然后//代码效果参考:https://v.youku.com/v_show/id_XNjM5NTYxMjM5Ng==.html

就写了段code:

然后发现,哇,selenium不支持PhantomJS了,因为chrome和firefox自带了headless的访问,然后就去各个blog看,最后爬下了这个网站:

1 import unittest

2 import requests

3 import time

4 import re

5 from random import randint

6 from selenium import webdriver

7 from selenium.webdriver.chrome.options import Options

8 from selenium.webdriver.common.keys import Keys

9

10 class ooxx_spider(unittest.TestCase):

11

12 def setUp(self):

13 chrome_options = Options()

14 chrome_options.add_argument('--headless')

15 chrome_options.add_argument('--disable-gpu')

16 self.driver = webdriver.Chrome('E:/chromedriver.exe', chrome_options=chrome_options)

17

18 def test_spider(self):

19 for i in range(1, 80):

20 url = '' + 'page-' + str(i)

21 self.driver.get(url)

22 //代码效果参考:https://v.youku.com/v_show/id_XNjM5OTMwMTE5Mg==.html

print(url)

23 elem = self.driver.find_elements_by_xpath('//*【@class=""commentlist""】/li/div/div/div/p/img')#/li/div/div/div/p/img

24 for j in elem:

25 self.save_img(j.get_attribute('src'))

26 print('第{}页爬取成功'.format(i))

27

28 def save_img(self, res):

29 suffix = res.split('.')【-1】

30 destination = 'picture/' + str(randint(1, 1000)) + str(randint(1, 1000)) + '.'+ suffix

31 r = requests.get(res)

32 with open(destination, 'wb') as f:

33 f.write(r.content)

34

35 def tearDown(self):

36 self.driver.close()

37

38 if name == 'main':

39 unittest.main()

补上多线程的代码

核心代码:

1 def test_multiscraping(self):

2 p = Pool()#默认大小是cpu的核数,你可以修改比如说双核Pool(2)

3 #这里假设我是4个进程,所以range(5)

4 for i in range(5):

5 p.apply_async(scraping, args = (i, ))

6 p.close()

7 p.join()

cpu太垃圾了,晚上回去用同学的cpu测试一下(留下了穷人的眼泪)

不忘初心,方得始终


"
image.png
相关文章
|
消息中间件 存储 算法
嵌入式操作系统服务机制
嵌入式操作系统服务机制
329 0
|
Java Docker 索引
记录一次索引未建立、继而引发一系列的问题、包含索引创建失败、虚拟机中JVM虚拟机内存满的情况
这篇文章记录了作者在分布式微服务项目中遇到的一系列问题,起因是商品服务检索接口测试失败,原因是Elasticsearch索引未找到。文章详细描述了解决过程中遇到的几个关键问题:分词器的安装、Elasticsearch内存溢出的处理,以及最终成功创建`gulimall_product`索引的步骤。作者还分享了使用Postman测试接口的经历,并强调了问题解决过程中遇到的挑战和所花费的时间。
|
12月前
HTML绝对路径
HTML绝对路径。
65 2
|
编解码
RTP传输AAC
RTP传输AAC
299 1
|
IDE 开发工具 内存技术
Motorola VMIVME-7452 单插槽 VMEbus 软盘/硬盘模块
VMIVME-7452 是一款无源 VMEbus 板卡,配有一个 3.5" 1.44 MB 软驱和一个硬盘,还可选配一个闪存驱动器。它采用标准 6U 单插槽外形尺寸,功耗低。设计兼容 VMIC 的 VMEbus PC/AT SBC 板卡(兼容型号请参阅规格书)。规格包括闪存驱动器的尺寸(160 x 233.25 x 20.32 毫米)、环境温度范围和数据传输速率。电源要求为 +5 V、最大 2.5 A(启动)和通常 1.0 A。电路板还列出了兼容附件和相关产品,包括输入/输出模块、充电控制器和通信板。
|
算法 编译器 C语言
二叉树的创建、销毁、层序遍历与层序遍历的进阶、利用层序遍历判断二叉树是否是为完全二叉树
二叉树的创建、销毁、层序遍历与层序遍历的进阶、利用层序遍历判断二叉树是否是为完全二叉树
|
JavaScript 前端开发 API
Vue框架Element UI教程-Mock的使用(七)
Vue框架Element UI教程-Mock的使用(七)
121 0
|
存储 算法 Linux
Linux系统进程概念详解(下)
在 Linux 内核中,页表是通过多级页表的方式来实现的。每个进程都有自己独立的页表用于将虚拟地址映射到物理地址。
|
存储 程序员 编译器
(猿如意)最近在用的一款神器,简直无敌
(猿如意)最近在用的一款神器,简直无敌
471 0
(猿如意)最近在用的一款神器,简直无敌

热门文章

最新文章