【SDK社区】python表情包爬虫

Posted on 2021-05-13 16:57  sesen  阅读(86)  评论(0编辑  收藏  举报

文章目录

一、需要用到的模块

二、开始写代码

1.创建保存图片的文件夹

2.创建请求头

3.代码主体

4.创建循环

完整代码

一、需要用到的模块

import requests 
import os
from bs4 import BeautifulSoup 

还需要有一个 lxml库 但不需要导入 BeautifulSoup 在 beautifulsoup4 的包下

二、开始写代码

1.创建保存图片的文件夹
if not os.path.isdir("./img/"): #如果当前目录下没有img文件夹
    os.mkdir("./img/") #创建img文件夹

2.创建请求头
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'
	}

那么为什么要创建请求头呢,因为在网站访问的过程中,有大部分网站会对当前请求做验证,来判断当前的请求是否合法(不是使用浏览器来获取网站数据的话会被认为非法请求)。如果不添加请求头的话,可能会出现当前网站没有访问权限。

提示:请求头的内容可用Burpsuite来抓取
在这里插入图片描述

3.代码主体
def pa(num):
    url = 'https://fabiaoqing.com/biaoqing/lists/page/'+str(num)+'.html' #构造url
    rp = requests.get(url,headers).text #请求url 用文本返回
    soup = BeautifulSoup(rp,'lxml') #构建soup
    img_list = soup.find_all('img',class_='ui image lazy') #筛选所有img标签 条件为class=xxx
    for img in img_list:  
        img_url = img['data-original'] #获取这个属性的内容
        img_title = img['title'] 
        print(img_url,img_title)
        try:
            with open('img/'+img_title + os.path.splitext(img_url)[-1],'wb') as f: #图片文件
                image = requests.get(img_url).content #请求img_url 以二进制返回
                f.write(image)
        except:
            pass

4.创建循环
for i in range(1,201): #网站有多少页就设置多少
    pa(i)
# 将每一页的图片都抓下来

在这里插入图片描述

完整代码

import requests #请求模块
import os
from bs4 import BeautifulSoup #抓取网站内容
if not os.path.isdir("./img/"):
    os.mkdir("./img/")
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}
#创造头
def pa(num):
    url = 'https://fabiaoqing.com/biaoqing/lists/page/'+str(num)+'.html' #构造url
    rp = requests.get(url,headers).text #请求url 用文本返回
    soup = BeautifulSoup(rp,'lxml') #构建soup
    img_list = soup.find_all('img',class_='ui image lazy') #筛选所有img标签 条件为class=xxx
    for img in img_list:  
        img_url = img['data-original'] #获取这个属性的内容
        img_title = img['title'] 
        print(img_url,img_title)
        try:
            with open('img/'+img_title + os.path.splitext(img_url)[-1],'wb') as f:
                image = requests.get(img_url).content #请求img_url 以二进制返回
                f.write(image)
        except:
            pass
for i in range(1,201):
    pa(i)


原文转自SDK社区:https://www.sdk.cn/details/q5rAzk4ZrRoYbYWJa7

Copyright © 2024 sesen
Powered by .NET 9.0 on Kubernetes