爬取煎蛋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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue开发环境搭建(win7)

    vue开发环境搭建(win7)vue开发环境搭建-win71.安装node,js2.设置nodeglobal(全局)和cache(缓存)路径3.配置环境变量4.基于Node.js安装cnpm(淘宝镜像)5.安装vue6.安装vue脚手架vue-cli7.项目创建8.添加相关依赖9.修改端口号10.运行项目1.安装node,js下载node.js安装包:node.js下载官网在这里,我选择…

    2022年8月30日
    4
  • rocketmq启动报错VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild

    rocketmq启动报错VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild解决方案:修改/RocketMQ/devnev/bin/下的服务启动脚本runserver.sh、runbroker.sh中对于内存的限制,​改一下内存大小就行了:JAVA_OPT=”${JAVA_OPT}-server-Xms128m-Xmx128m-Xmn128m-XX:PermSize=128m-XX:MaxPermSize=128m”…

    2022年5月14日
    46
  • python安装jieba库的具体步骤_无法安装lxml库

    python安装jieba库的具体步骤_无法安装lxml库Jupternotebook安装jieba库教程jieba库是一款优秀的Python第三方中文分词库,jieba支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析 全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据 搜索引擎模式:在精确模式的基础上,对长词再次进行切分jieba库是第三方库,我们需要单独进行安装,以下提供两种方法:第一种方法:在jupyternoteboo

    2022年9月21日
    4
  • Path和ClassPath差异

    Path和ClassPath差异

    2022年1月7日
    58
  • assertequals() php,assertEquals()

    assertequals() php,assertEquals()assertEquals()assertEquals(mixed$expected,mixed$actual[,string$message=”])当两个变量$expected和$actual不相等时报告错误,错误讯息由$message指定。assertNotEquals()是与之相反的断言,接受相同的参数。assertAttributeEquals()和asser…

    2022年7月12日
    13
  • mshta 反弹shell

    mshta 反弹shell  kali系统准备:  复制以下ruby代码到/usr/share/metasploit-framework/modules/exploits/windows/smb/msh_shell.rb目录(要注意代码缩进哦):###ThismodulerequiresMetasploit:https://metasploit.com/download#Currentso…

    2022年7月15日
    85

发表回复

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

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