0%
前言
编写网络爬虫代码,实现自动化下载图片
准备工作
安装requests
编写爬虫
请求网页
<html>
:要爬的网址
1 2 3 4
| import requests
response = requests.get("<html>") print(response.text)
|
- 如果网站有反爬虫,可以修改
headers
中的User-Agent
- 可以自定义
User-Agent
,或者在浏览器打开开发者模式查看网页请求头的User-Agent
1 2 3 4 5 6 7
| import requests
headers = { "User-Agent": "Admin" } response = requests.get("<html>", headers = headers) print(response.text)
|
解析网页
- 导入re,用正则表达式写爬取规则
- 可以先查看网站源代码,把包含图片原链接的标签复制下来,可能会出现的不同的字符串修改为
.*?
<png>
:图片的正则表达式
1 2 3 4 5 6
| import re
html = response.text
urls = re.findall('<png>', html) print(urls)
|
保存图片
遍历数组
1 2
| for url in urls: response = requests.get(url, headers = headers)
|
获取图片名
1
| file_name = url.split('/')[-1]
|
保存图片
1 2
| with open(file_name, 'wb') as f: f.write(response.content)
|
设置延迟
1 2 3
| import time
time.sleep(1)
|
优化
设置目录名
<dir>
:标题的正则表达式
1
| dir_name = re.findall('<dir>', html)[-1]
|
创建目录
1 2 3 4
| import os
if not os.path.exists(dir_name): os.mkdir(dir_name)
|
修改保存路径
1 2
| with open(dir_name + '/' + file_name, 'wb') as f: f.write(response.content)
|
完整源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import time import requests import re import os
headers = { "User-Agent": "Admin" } response = requests.get("https://www.vmgirls.com/13230.html", headers = headers) html = response.text
dir_name = re.findall('<h1 class="post-title h3">(.*?)</h1>', html)[-1]
if not os.path.exists(dir_name): os.mkdir(dir_name)
urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?">', 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)
|
完成
参考文献
哔哩哔哩——python学习者