登录
转载

python表情包爬虫

发布于 2021-04-12 阅读 508
  • 后端
  • Python
转载

文章目录

  • 一、需要用到的模块
  • 二、开始写代码
    • 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)


评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报