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)