爬虫爬取网站‘斗图吧’的表情包,带源码

爬虫爬取网站斗图吧的表情包,带源码

"""
爬取网站:斗图啦
爬取方式:XPATH 
"""

import requests
import parsel
import concurrent
#import os,sys
import time





'''

表情包python多线程爬取

requests:数据请求模块
parsel:数据解析模块

思路:
1,确定正确的url地址(静态网页\动态网页(动态加载<涉及到数据库查询>))
2,请求数据--requests(模拟浏览器请求数据库的数据,但是请求到的是范数据)
3,数据解析--parsel(解析范数据)
4,保存数据(本地文件\数据库)
'''
wq = input('enter a word:')

params = {
    'keyword':wq
}
page_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
for page in page_list:
    base_url = "https://www.doutula.com/search?type=photo&more=1&keyword=%E6%92%A9%E5%A6%B9&page={}".format(page)
    
    #1,确定正确的url地址(静态网页\动态网页(动态加载<涉及到数据库查询>))
    #base_url = "https://www.doutula.com/search?type=photo&more=1&keyword=%E6%92%A9%E5%A6%B9&page=2"
    header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
    #User-Agent:身份标识,伪装身份,伪装成浏览器(最常见的一个反扒字段)
    
    #2,请求数据--requests
    response = requests.get(url=base_url,params=params,headers=header)

    html_data = response.text
    #网页由于要保证性能,所以大部分使用的加载方式是懒加载,所以不能使用src,而是使用data-original
    #3,数据解析--parsel
    #3.1转换数据类型
    selector = parsel.Selector(html_data)
    result_list = selector.xpath('//a[@class="col-xs-6 col-md-2"]')#//表示跨节点提取;@class:根据属性对标签精确定位;返回列表形式


    #二次数据获取
    for result in result_list:
        

        title = result.xpath('./img/@alt').get()#获取img标签
        print(title)
        

        img_url = result.xpath('./img/@data-original').get()#获取data-original标签
        
        
        all_title = img_url.split('_')[-1]
        
        
        #请求图片数据
        img_data = requests.get(url=img_url,headers=header).content#二进制数据

        #4,保存数据(本地文件\数据库)
        route = 'D:/Python_Project/Emoticon_code/img{}/'.format(page)
        with open(route + all_title,mode='wb') as f:
            f.write(img_data)
            print("保存完成:",all_title,page)
            

注释上已经标注的很清晰了,有兴趣的小伙伴可以试试。
分为了两步,第一步是获取网页的标签数据,第二次通过第一步获取的标签数据去请求图片(也就是表情包)的url地址,遍历下载到本地

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值