Python爬虫入门教程 13-100 斗图啦表情包多线程爬取

简介: 1.准备爬取斗图la写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的。关键技术点 aiohttp ,你可以看一下我前面的文章,然后在学习一下。
+关注继续查看

1.准备爬取斗图la写在前面

今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的。关键技术点 aiohttp ,你可以看一下我前面的文章,然后在学习一下。

网站就不分析了,无非就是找到规律,拼接URL,匹配关键点,然后爬取。

2.开始撸代码

首先快速的导入我们需要的模块,和其他文章不同,我把相同的表情都放在了同一个文件夹下面,所以需要导入os模块

import asyncio
import aiohttp
from lxml import etree
import os

编写主要的入口方法

if __name__ == '__main__':
    url_format = "http://www.doutula.com/article/list/?page={}"
    urls = [url_format.format(index) for index in range(1,586)]
    loop = asyncio.get_event_loop()
    tasks = [x_get_face(url) for url in urls]
    results = loop.run_until_complete(asyncio.wait(tasks))

我们是为了学习,不是为了攻击别人服务器,所以限制一下并发数量

sema = asyncio.Semaphore(3)

async def x_get_face(url):
    with(await sema):
        await get_face(url)

最后,一顿操作猛如虎,把所有的代码补全,就搞定了,这部分没有什么特别新鲜的地方,找图片链接,然后下载。

headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"}
async def get_face(url):
    print("正在操作{}".format(url))
    async with aiohttp.ClientSession() as s:
        async with s.get(url,headers=headers,timeout=5) as res:
            if res.status==200:
                html = await res.text()
                html_format = etree.HTML(html)

                hrefs = html_format.xpath("//a[@class='list-group-item random_list']")

                for link in hrefs:
                    url = link.get("href")
                    title = link.xpath("div[@class='random_title']/text()")[0]  # 获取文件头部

                    path = './biaoqings/{}'.format(title.strip())  # 硬编码了,你要先在项目根目录创建一个biaoqings的文件夹

                    if not os.path.exists(path):
                        os.mkdir(path)
                    else:
                        pass

                    async with s.get(url, headers=headers, timeout=3) as res:
                        if res.status == 200:
                            new_html = await res.text()

                            new_html_format = etree.HTML(new_html)
                            imgs = new_html_format.xpath("//div[@class='artile_des']")
                            for img in imgs:
                                try:
                                    img = img.xpath("table//img")[0]
                                    img_down_url = img.get("src")
                                    img_title = img.get("alt")
                                except Exception as e:
                                    print(e)

                                async with s.get(img_down_url, timeout=3) as res:
                                    img_data = await res.read()
                                    try:
                                        with open("{}/{}.{}".format(path,img_title.replace('\r\n',""),img_down_url.split('.')[-1]),"wb+") as file:
                                            file.write(img_data)
                                    except Exception as e:
                                        print(e)

                        else:
                            pass


            else:
                print("网页访问失败")
相关文章
|
1月前
|
数据采集 数据可视化 Python
解析python爬取Ebay数据的方式
解析python爬取Ebay数据的方式
|
3月前
|
数据库 Python
|
3月前
|
数据采集 Python
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
|
3月前
|
定位技术 API Python
python 爬取餐厅的商户联系人公开号码,连续爬5页,实例脚本
python 爬取餐厅的商户联系人公开号码,连续爬5页,实例脚本
|
4月前
|
数据采集 Python
Python的Requests来爬取今日头条的图片和文章
Python的Requests来爬取今日头条的图片和文章
|
4月前
|
数据采集 Python
用python爬取百度上的特定图片
用python爬取百度上的特定图片
47 1
|
4月前
|
数据采集 运维 测试技术
如何使用Python爬取网站进行性能测试
网站性能测试是一种评估网站的响应速度、稳定性、可靠性和资源消耗的方法。网站性能测试可以帮助网站开发者和运维人员发现和解决网站的性能瓶颈,提高用户体验和满意度。本文将介绍如何使用Python编写一个简单的爬虫程序,来模拟用户访问网站的行为,并收集和分析网站的性能数据。
如何使用Python爬取网站进行性能测试
|
4月前
|
数据采集 XML 数据库
使用Python爬取网站数据并进行图像处理
在互联网时代,网站数据是一种宝贵的资源,可以用于分析、挖掘、展示等多种目的。但是,如何从海量的网页中提取我们需要的数据呢?Python是一种强大而灵活的编程语言,它提供了许多用于爬虫和图像处理的库和工具,可以帮助我们实现这一目标。本文将介绍如何使用Python爬取网站数据并进行图像处理的基本步骤和方法。
266 0
使用Python爬取网站数据并进行图像处理
|
4月前
|
数据采集 编解码 JSON
使用Python进行网站数据爬取和视频处理
在互联网时代,我们经常需要从网站上获取数据并进行分析或处理。有时候,我们还需要对视频数据进行一些操作,比如剪辑、转码、合成等。Python是一门非常适合做数据分析和视频处理的编程语言,它有很多强大的库和工具可以帮助我们完成这些任务。本文将介绍如何使用Python的requests模块爬取网站数据并进行视频处理的方法和步骤。
使用Python进行网站数据爬取和视频处理
|
4月前
|
Web App开发 数据采集 存储
如何使用Selenium Python爬取动态表格中的多语言和编码格式
Selenium是一个用于自动化Web浏览器的工具,它可以模拟用户的操作,如点击、输入、滚动等。Selenium也可以用于爬取网页中的数据,特别是对于那些动态生成的内容,如表格、图表、下拉菜单等。本文将介绍如何使用Selenium Python爬取一个动态表格中的多语言和编码格式的数据,并将其保存为CSV文件。
如何使用Selenium Python爬取动态表格中的多语言和编码格式
相关产品
云迁移中心
推荐文章
更多