python爬虫实战1:批量爬取网址图片

1.爬虫基础知识

目前,爬虫的相关知识了解了以下这么多。
在这里插入图片描述

2.爬取图片的步骤

学习了很多视频教程,基本介绍爬虫都是主要分3步:
1.请求网页
2.解析网页
3.保存图片

3.爬虫实战

唯有实战,才能提升所学。
今天就用学到的知识,正式开始我的第一个爬虫实战,用正则表达式批量爬取网址图片。
1.请求网页
首先,打开百度,随便搜索一下图片,打开一个网址作为请求网页。
https://www.qqtn.com/article/article_311775_1.html
在这里插入图片描述
请求网页的时候,携带好User-agent信息
在这里插入图片描述

2.解析网页
学习视频了解到解析网页常用的有xpath、json语句,下次练习的时候学习下,今天首先用正则表达式来解析网页。
在这里插入图片描述

3.保存图片
3.1 第一次保存,图片和程序在一个文件夹,看着比较乱。在这里插入图片描述
3.2 新建一个文件夹,按网页标题命名,将爬取的图片放到指定文件中
在这里插入图片描述
在这里插入图片描述

练习代码

import requests
import re
import time
import os

url = "https://www.qqtn.com/article/article_311775_1.html"
"""第一步,请求网址"""
# 1.不增加headers的打印结果
response = requests.get(url)
# print(response.text)
response.encoding = "gbk"
html = response.text
print(response.request.headers)
# 打印结果:{'User-Agent': 'python-requests/2.25.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

# 2.增加headers的打印结果,避免网站识别为爬虫
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
}
response = requests.get(url,headers=headers)
print(response.request.headers)
# 打印结果:{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

"""第二步,解析网页"""
# 创建文件夹
dir_name = re.findall('<h1>(.*?)</h1>',html)[-1]

if not os.path.exists(dir_name):
    os.mkdir(dir_name)

# 用正则表达式解析网页
urls = re.findall('<img src="(.*?)"/></p>',html)
# print(urls)

"""第三步,保存图片"""
for url in urls:
    time.sleep(1)
    # 图片的名字
    file_name = url.split("/")[-1]
    response = requests.get(url,headers=headers)
    with open(dir_name + "/" + file_name,"wb") as f:
        f.write(response.content)
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值