爬取煎蛋XXOO妹子图片

爬取煎蛋XXOO妹子图片今天回忆廖大的多线程的时候,看到下面有人写了个多线程的爬虫http://www.tendcode.com/article/jiandan-meizi-spider-2/,点进去看了下,分析的很仔细,写

大家好,又见面了,我是你们的朋友全栈君。

今天回忆廖大的多线程的时候,看到下面有人写了个多线程的爬虫http://www.tendcode.com/article/jiandan-meizi-spider-2/,点进去看了下,分析的很仔细,写了接近200行代码吧

让后我就研究了一下这个网站,emmmm,selenium + PhantomJS不就直接搞定了嘛,然后就写了段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 = 'http://jandan.net/ooxx/' + 'page-' + str(i)
21             self.driver.get(url)
22             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测试一下(留下了穷人的眼泪)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154775.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android之cannot convert from Fragment1 to Fragment

    在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment,很是纳闷,我是参照一个开源代码来做的,源码里面很正常,我这里却报错,后来才发现,是对包的导入出现了差错,在Fragment1中导入的是android.app.Fragment而在出错的那个类里面是用android.su

    2022年3月9日
    40
  • excel导入mysql代码_EXCEL导入Mysql方法「建议收藏」

    excel导入mysql代码_EXCEL导入Mysql方法「建议收藏」在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中。本人搜集相关的资料并加以实践总结出了以下几种方法:1.使用PHPExcelParserPro软件,但是这个软件为收费软件;2.可将EXCEL表保存为CSV格式,然后通过phpmyadmin或者SQLyog导入,SQLyog导入的方法为:·将…

    2022年9月21日
    1
  • Lighttpd 配置fastcgi

    Lighttpd 配置fastcgihttp://my.oschina.net/davehe/blog/108107        在配置之前,先了解下lighttpd和fastcgi.            Lighttpd相信大家都使用过,它是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的webserver中较为优秀的一个

    2022年7月27日
    6
  • C++函数模板(模板函数)详解

    C++函数模板(模板函数)详解定义用法:函数模板的原理延申用法2.1为什么需要类模板2.2单个类模板语法2.3继承中的类模板语法案例1:案例2:2.4类模板的基础语法2.5类模板语法知识体系梳理1.所有的类模板函数写在类的内部复数类:2.所有的类模板函数写在类的外部,在一个cpp中2.5总结关于类模板的几点说明:2.6类模板中的static关键字案例2:以下来自:C++类模板遇上static关键字…

    2022年4月4日
    50
  • python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片

    python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片、非常简短,代码不是很多非常适合新手练习!学习python、python爬虫过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:前面是934,中间109,后面是170,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享!代码展示:#!/u…

    2022年9月14日
    1
  • SPSS-卡方检验-论文常用

    SPSS-卡方检验-论文常用卡方分布

    2022年5月17日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号