通过爬虫爬取一些图片
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
本次文章全部从该网址爬取(doge)
【唯美壁纸】桌面壁纸唯美小清新_唯美手机壁纸_电脑桌面壁纸高清唯美大全 - 优美图库 (umei.cc)
目标
首先想要爬取图片,我需要在网站的首页中,找到子页面的链接(因为在首页中的图片为缩略图,不够高清 doge),然后请求到子页面,。
也就是说,想要把大象。。。呸
想要下载该网站的图片(高清大图),需要三步,
第一步,在主页面中拿到每个图片的子页面链接
第二步,在子页面中找到真正的图片下载链接
第三步,下载图片
第一步:拿到子页面链接
def main_page():#定义一个函数
with open("childPage.txt",mode="w") as f:#创建一个名为 childPage.txt 的文件
for i in range(1,56):#规定爬取数量
try:
resp = requests.get(f"https://www.umei.cc/bizhitupian/we
imeibizhi/{i}.htm")
# <meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
resp.encoding = 'utf-8' # 处理中
⽂乱码, 这⾥要和⻚⾯上的 charset 对应
main_page = BeautifulSoup(resp.text, "html.parser")
typeListDiv =
main_page.find("div", attrs={"class":"TypeList"})
main_a_list =typeListDiv.find_all("a")
for main_a in main_a_list:
href = main_a.get("href") #拿到某⼀个标签中 xxx 属性的值
f.write(href)
f.write("\n")
print(f"https://www.umei.cc/bizhitupian/weimeibizhi/{i}.htm, 成功了!")
time.sleep(0.5)
except:
print(f"https://www.umei.cc/bizhitupian/weimeibizhi/{i}.htm, 出错了")
print(resp.text)
break # 也可以记录下来, 供以后查错
第二步:获取到子页面信息,找到下载图片的图片路径
def child_page():
with open("childPage.txt", mode="r") as
f:
for line in f:
line = line.strip()
resp = requests.get(line)
resp.encoding='utf-8'
child = BeautifulSoup(resp.text,"html.parser")
div = child.find("div",
class_="ImageBody")
img = div.find("img")
if img:
src = img.get("src")
print(src)
else:
print(line, "没有图⽚")
第三步:下载图片
def download_img(src):
with open("img/"+src.split("/")[-1],mode="wb") as f:
resp = requests.get(src) # 下载图⽚
f.write(resp.content) # 图⽚写⼊⽂件
print(src, "down!")
最后运行时要把 img 文件设置为 excluded,否则 pycharm 会很卡。
总结:
爬虫的基本思路
1、打开一个具体的网页
2、编写代码访问这个网页并访问数据
3、解析自己想要的数据
详细思路:
1、打开网页
2、查看网站源代码,并查找自己所需要的数据
如果有
这时候打开开发者模式,点击 network。这个时候你会看到需要的数据刚好在第一个网址返回。最后编写代码爬取网页并使用 xpath 解析
如果没有
就打开开发者模式,点击 network,刷新。这时并不能在第一个网站中就返回数据。这个时候数据是藏在其他的 js 等文件中。
评论