python3爬虫 -----爬取斗图息-------www.doutula.com

普通爬取:

 1 # -*- coding:utf-8 -*-
 2 # author:zxy
 3 # Date:2018-10-21
 4 import requests
 5 from lxml import etree
 6 import re
 7 import urllib
 8 import os
 9 import time
10
11
12
13 def parse_page(url):
14     headers={
15         ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) ‘
16                      ‘AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36‘,
17         ‘Cookie‘:‘__cfduid=ddb28ef1934faef742f7fb8911d7b33bd1540080067; UM_distinctid=16693ece9945b2-0b031da4b19f32-333b5602-1fa400-16693ece9958e4;‘
18                   ‘ _ga=GA1.2.1950184368.1540080070; _gid=GA1.2.1249143498.1540080070; _gat=1‘
19     }
20     response=requests.get(url,headers=headers)
21     text=response.text
22     html=etree.HTML(text)
23     imgs=html.xpath("//div[@class=‘page-content text-center‘]//img[@class!=‘gif‘]")
24     for img in imgs:
25         img_url=img.get(‘data-original‘)
26         alt=img.get(‘alt‘)
27         alt=re.sub(r‘[\??\.、.!!,,]‘,‘‘,alt)
28         suffix1=os.path.splitext(img_url)[1]
29         suffix=suffix1[0:4]
30         filename=alt+suffix
31         urllib.request.urlretrieve(img_url,‘D:\\我的图片\\emoticon\\%s‘%filename)
32
33
34
35 def main():
36     for x in range(1,101):
37         url="http://www.doutula.com/photo/list/?page=%d"%x
38         parse_page(url)
39         time.sleep(1)
40     # url="http://www.doutula.com/photo/list/?page=1"
41     # parse_page(url)
42
43 if __name__ == ‘__main__‘:
44     main()

多线程爬取:

 1 # -*- coding:utf-8 -*-
 2 # author:zxy
 3 # Date:2018-10-21
 4
 5 from queue import Queue
 6 import requests
 7 from lxml import etree
 8 import re
 9 import urllib
10 import os
11 import time
12 import threading
13 from urllib import request
14
15 class Procude(threading.Thread):
16     headers = {
17         ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) ‘
18                       ‘AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36‘,
19         ‘Cookie‘: ‘__cfduid=ddb28ef1934faef742f7fb8911d7b33bd1540080067; UM_distinctid=16693ece9945b2-0b031da4b19f32-333b5602-1fa400-16693ece9958e4;‘
20                   ‘ _ga=GA1.2.1950184368.1540080070; _gid=GA1.2.1249143498.1540080070; _gat=1‘
21     }
22     def __init__(self,page_queue,img_queue,*args,**kwargs):
23         super(Procude, self).__init__(*args,**kwargs)
24         self.page_queue=page_queue
25         self.img_queue=img_queue
26
27     def run(self):
28         while True:
29             if self.page_queue.empty():
30                 break
31             url=self.page_queue.get()
32             self.parse_page(url)
33
34     def parse_page(self,url):
35         response=requests.get(url,headers=self.headers)
36         text=response.text
37         html=etree.HTML(text)
38         imgs=html.xpath("//div[@class=‘page-content text-center‘]//img[@class!=‘gif‘]")
39         for img in imgs:
40             img_url=img.get(‘data-original‘)
41             alt=img.get(‘alt‘)
42             alt=re.sub(r‘[\??\.、.!!,,\*]‘,‘‘,alt)
43             suffix1=os.path.splitext(img_url)[1]
44             suffix=suffix1[0:4]
45             filename=alt+suffix
46             self.img_queue.put((img_url,filename))
47
48 class Consumer(threading.Thread):
49     def __init__(self,page_queue,img_queue,*args,**kwargs):
50         super(Consumer, self).__init__(*args,**kwargs)
51         self.page_queue=page_queue
52         self.img_queue=img_queue
53     def run(self):
54         while True:
55             if self.img_queue.empty() and self.page_queue.empty():
56                 break
57
58             img_url,filename=self.img_queue.get() #元组解包
59             request.urlretrieve(img_url,‘D:\\我的图片\\emoticon\\%s‘%filename)
60             print(filename+"下载完成")
61
62
63 def main():
64     page_queue=Queue(100)
65     img_queue=Queue(1000)
66     for x in range(1,101):
67         url="http://www.doutula.com/photo/list/?page=%d"%x
68         page_queue.put(url)
69         # time.sleep(1)
70
71     for x in range(5):
72         t=Procude(page_queue,img_queue)
73         t.start()
74
75     for x in range(5):
76         t=Consumer(page_queue,img_queue)
77         t.start()
78
79
80 if __name__ == ‘__main__‘:
81     main()

爬取效果如下所示:

原文地址:https://www.cnblogs.com/z-712/p/9824497.html

时间: 2024-11-08 20:35:15

python3爬虫 -----爬取斗图息-------www.doutula.com的相关文章

【Python3 爬虫】U28_多线程爬取斗图啦的表情包

目录 1.需求描述 2.实战代码 2.1 单线程爬取 2.2 多线程版 1.需求描述 爬取斗图啦网站,地址为:https://www.doutula.com/photo/list/[Python3 爬虫]U28_多线程爬取斗图啦的表情包 原文地址:https://www.cnblogs.com/OliverQin/p/12636681.html

spider_爬取斗图啦所有表情包(图片保存)

"""爬取斗图吧里面的所有表情包 知识点总结: 一.使用requests库进行爬取,随机请求头(网站反爬措施少.挂个请求头足矣) 二.具体思路: 1.先爬取所有的图片url,放在列表里 2.循环遍历url请求这些图片, 3.将图片进行分类保存三.分类保存用到一个知识点,endwith(以***结尾) 使用这个函数,将jpg,gif,png等不同类型的图片分开四.演示案例中,只爬取了前20页.五.各个定义的数字变量意思为: n=1 网页页数 num=1 保存图片数 注:该案例主

scrapy爬取斗图表情

用scrapy爬取斗图表情,其实呀,我是运用别人的博客写的,里面的东西改了改就好了,推存链接" http://www.cnblogs.com/jiaoyu121/p/6992587.html " 首先建立项目:scrapy startproject doutu 在scrapy框架里先写自己要爬取的是什么,在item里面写. import scrapyclass DoutuItem(scrapy.Item): # define the fields for your item here

python3 爬虫---爬取糗事百科

这次爬取的网站是糗事百科,网址是:http://www.qiushibaike.com/hot/page/1 分析网址,参数'page/'后面的数字'1'指的是页数,第二页就是'/page/2',以此类推... 一.分析网页 网页图片 然后明确要爬取的元素:作者名.内容.好笑数.以及评论数量 每一个段子的信息存放在'div id="content-left"'下的div中 爬取元素的所在位置 二.爬取部分 工具: Python3 requests xpath 1.获取每一个段子 1 #

利用python3爬虫爬取漫画岛-非人哉漫画

最近学了一点点python爬虫的知识,面向百度编程爬了一本小说之后感觉有点不满足,于是突发奇想尝试爬一本漫画下来看看. 一.效果展示 首先是我们想要爬取的漫画网页:  http://www.manhuadao.cn/   网页截图:     其次是爬取下来的效果: 每一回的文件夹里面是这样的:  (因为网站图片的问题...所以就成了这个鬼样子)  二.分析原理      1.准备:需要vscode或者其他能够编译运行python的软件,推荐python版本3.X ,否则有可能出现编译问题. 下载

Python3爬虫爬取淘宝商品数据

这次的主要的目的是从淘宝的搜索页面获取商品的信息.其实分析页面找到信息很容易,页面信息的存放都是以静态的方式直接嵌套的页面上的,很容易找到.主要困难是将信息从HTML源码中剥离出来,数据和网页源码结合的很紧密,剥离数据有一定的难度. 然后将获取的信息写入excel表格保存起来,这次只爬取了前面10页 的内容.在运行代码的过程中发现,30页后面的数据有问题,出现了手机价格为0的情况,这是不符合实际的,码也没有写错误处理的代码. 这次先写个粗略的,有点凌乱的感觉,下次有时间再系统的整理整理吧. im

python3爬虫爬取煎蛋网妹纸图片

其实之前实现过这个功能,是使用selenium模拟浏览器页面点击来完成的,但是效率实际上相对来说较低.本次以解密参数来完成爬取的过程. 首先打开煎蛋网http://jandan.net/ooxx,查看网页源代码.我们搜索其中一张图片的编号,比如3869006,看下在源代码中是否能找到图片链接 从上面的HTML结构中找到这个标号对应的一些属性,没有直接的图片链接地址,只有一个src=//img.jandan.net/blank.gif,这很明显不是个真实的链接地址,因为每一个图片编号都有这个值.我

python3 爬虫爬取深圳公租房轮候库(深圳房网)

深圳公租房轮候库已经朝着几十万人的规模前进了,这是截至16年10月之前的数据了,贴上来大家体会下 所以17年已更新妥妥的10W+ 今天就拿这个作为爬虫的练手项目 1.环境准备: 操作系统:win10 python版本:python3.5.3 开发工具:sublime 3 python需要安装的库: anaconda 没安装的可以去https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/这里下载,国内镜像比较快: Requests    urllib的

用Python多线程实现生产者消费者模式爬取斗图网的表情图片

什么是生产者消费者模式 某些模块负责生产数据,这些数据由其他模块来负责处理(此处的模块可能是:函数.线程.进程等).产生数据的模块称为生产者,而处理数据的模块称为消费者.在生产者与消费者之间的缓冲区称之为仓库.生产者负责往仓库运输商品,而消费者负责从仓库里取出商品,这就构成了生产者消费者模式. 生产者消费者模式的优点 解耦假设生产者和消费者分别是两个线程.如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合).如果未来消费者的代码发生变化,可能会影响到生产者的代码.