听说多肉站案例不能采集了,那自行建设一个吧。爬虫120例复盘之战
Posted 梦想橡皮擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了听说多肉站案例不能采集了,那自行建设一个吧。爬虫120例复盘之战相关的知识,希望对你有一定的参考价值。
本篇博客是《爬虫120例》的复盘案例更新,原文为《技术圈的【多肉小达人】,一篇文章你就能做到》,案例出了一点小小问题,网站没了,很尴尬
此时就需要我们的爬虫训练场出马了,谁叫咱的口号是让天下没有失效的爬虫
呢!
文章目录
在正式编写本案例前,我还是找到了一个目标站点,即使用自建站,一些基础数据还是要提前采集一下的
www.huabaike.com/drzw/
采集目标站点
我们建设爬虫训练场,仅需要名称和图片即可,详情不在本次的采集范围内,并且数据量不多,仅使用 requests + re 模块即可,正好,和《技术圈的【多肉小达人】,一篇文章你就能做到》 文章涉及的技术点一致。
由于在多肉小达人那篇博客中已经涉及了所有基础要点,这里直接展示代码部分。
import requests
import re
headers =
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/90.0.4430.85 Safari/537.36"
def get_list():
"""
获取全部详情页链接
"""
all_list = []
res = requests.get("https://www.huabaike.com/jingtian/", headers=headers)
res.encoding = 'utf-8'
html = res.text
start = '<div class="zhiwuImg">'
end = '<div class="clear"></div>'
html = html[res.text.find(start):]
html = html[:html.find(end)]
pattern = re.compile(
'<img src="(.*?)" height=".*?" width=".*?" title="(.*?)" alt=".*?">')
all_list = pattern.findall(html)
return all_list
def save_img(title, url):
try:
img_res = requests.get(url, headers=headers)
img_data = img_res.content
print(f"抓取:url")
with open(f"images/title.png", "ab+") as f:
f.write(img_data)
except Exception as e:
print(e)
def run():
url_list = get_list()
for url, title in url_list:
save_img(title, url)
print(url_list)
if __name__ == "__main__":
run()
下图是运行中的效果。
最后是下载到文件夹中的效果。
运行相同的逻辑,将其他分类下的多肉图片也采集到本地。等全部运行完毕,我们就有了下图所描绘的素材总量,鸡150个多肉图片。
在爬虫训练场中建设多肉站点
素材准备完毕,接下来再次回到旧文案例中,其采集过程分为了2个步骤,如下所示:
- 通过分页地址获取详情页
- 通过详情页获取图片
在爬虫训练场中,我们也将模仿该效果。
搭建列表页
通过采集,生成 JSON 格式数据
为了准备一个列表页,需要采集一些基本文字信息。采集代码如下所示。
def get_detail_text(detail_url):
res = requests.get(detail_url, headers=headers)
res.encoding='utf-8'
data = res.text
pattern = re.compile('<blockquote>[\\s\\S]*<p>(.*?)</p>[\\s\\S]*</blockquote>')
detail = pattern.findall(data)
if detail is not None:
return detail[0]
else:
return None
得到对应数据之后,就可以进行 JSON 格式的数据拼接了。
搭建详情页
外联别人素材,同时下载素材做好备份
由于带宽原因,能用目标站点的资源,我们就用目标站点素材,先看一下图片是否有防盗链设置。
测试办法非常简单,在本地爬虫训练场项目中加载任意图片即可。
<div class="container">
<img src="https://img.huabaike.com/uploads/allimg/sltimg/201702/58ae3f4ee7fc0.jpg" alt="">
</div>
测试发现正常渲染,那前文获取到的JSON数据就可以直接使用了。
案例访问地址
总结
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 868 篇原创博客
👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇
以上是关于听说多肉站案例不能采集了,那自行建设一个吧。爬虫120例复盘之战的主要内容,如果未能解决你的问题,请参考以下文章