声明本人也是编程菜鸟用的是pycharm,全是我自已的理解若有错误的地方欢迎指出
1.首先导入包
import requests
import re
import time
requests 网页请求
re 正侧表达式
time 防止过快爬取导致网站崩溃
2.爬虫基础代码获取网页请求
这里我爬的是彼岸图:https://pic.netbian.com/
url = 'https://pic.netbian.com/'
header = {
"user-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 "
"Safari/537.36 Edg/122.0.0.0"
}
con = requests.get(url=url, headers=header)
print(con)
这样就可以向网页发送请求
得到以下效果:
3.获取网页代码
text = con.text
这样就可以获取前端html代码了
4.正侧匹配
parra = re.compile(r'src="(/u.*?)".alt="(.*?)"', re.S) # 'src="(/u.*?)".alt="(.*?)"' /u按规则进型匹配
re_get = re.findall(parra, text)
得到下面效果:
这里有人会说图片名字不对呀,个人理解是乱码了,也就是解码出问题了加以下代码就好:
con.encoding = con.apparent_encoding # 译码文字,utf-8得不了<img src="(.*?)" alt="(.*?)"> re_get1 = parra1.findall(a)
效果如下:
5.图片保存
path = '美食图片'
if not os.path.isdir(path): # 判断是否存在该文件夹,若不存在则创建
os.mkdir(path) # 创建
for i in re_get:
time.sleep(1)
link = i[0]
name = i[1]
with open(path+"/"+"{}.jpg".format(name), 'wb') as f:
res = requests.get(url+link)
f.write(res.content)
f.close()
print(name+".jpg获取成功")
link记录图片连接,name记录图片名字
这里记得一定要加
time.sleep(*)
防止将网页爬崩
这里可能会在第二个图片出错,那是因为文件保存不能有特殊符号如:*,所以各位爬取时要注意如果有加入以下代码:(加到name下即可)
第一种:
name = name.replace("*", "")# 字符串替换将字符串特殊符号替换
第二种:
name = re.sub(r"\*", "", name)
即可替代图片名字中的“*”为空格
这里我用的是第一种
否则会出现:
所以以后大家如果保存文件出错注意是不是名字原因
下面是完整代码:
import pandas
from bs4 import BeautifulSoup
import requests
import re
import time
url = 'https://pic.netbian.com/'
header = {
"user-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 "
"Safari/537.36 Edg/122.0.0.0"
}
con = requests.get(url=url, headers=header)
con.encoding = con.apparent_encoding # 译码文字,utf-8得不了<img src="(.*?)" alt="(.*?)"> re_get1 = parra1.findall(a)
text = con.text
parra = re.compile(r'src="(/u.*?)".alt="(.*?)"', re.S) # 'src="(/u.*?)".alt="(.*?)"' /u按规则进型匹配
re_get = re.findall(parra, text)
path = '美食图片'
for i in re_get:
time.sleep(1)
link = i[0]
name = i[1]
name = name.replace("*", "")# 字符串替换将字符串特殊符号替换
print(name)
with open(path+"/"+"{}.jpg".format(name), 'wb') as f:
res = requests.get(url+link)
f.write(res.content)
f.close()
print(name+".jpg获取成功")
print(re_get)
标签:name,get,python,爬虫,爬取,re,url,import,con
From: https://blog.csdn.net/m0_73655780/article/details/140191721