花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述<
技术向;
修正昨天的爬取教程,并介绍一个插件相关的知识,希望能为你提供帮助。
昨天的代码有一部分需要修正一下,完整代码应该是这样:
from bs4 import BeautifulSoup
import re
import requests
url = "http://stuu.scnu.edu.cn/articles?paged="
def get_page(url):
wb_data = https://www.songbingjia.com/android/requests.get(url)
soup = BeautifulSoup(wb_data.text,lxml)
titles = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr")
texts = soup.select("div.bloglist-container.clr > article > div.home-blog-entry-text.clr > p")
imgs = soup.select("div.bloglist-container.clr > article > a > div > img")
for title,text,img in zip(titles,texts,imgs):
data = https://www.songbingjia.com/android/
"标题":title.get_text(),
"摘要":text.get_text(),
"图片":img.get(data-original)
print(data)
def getmorepage(start,end):
for i in range (start,end):
get_page(url+str(i))
getmorepage(1,10)
主要是将这条代码:
"图片":img.get(src)修改成:
"图片":img.get(data-original)
如果我们仔细观察网页的代码,我们会看到其实它真实的链接在data-original里。如图(点击可以放大):
文章图片
这样改后就能成功得到我们想要的信息啦:
文章图片
那之前那个结果是怎么回事呢?
这是因为这个网站的图片显示是一种Lazyload的方法,这是一个用来缓冲加载图片的方法,能够避免用户一次性加载太多图片耗费太多流量。这就是为什么昨天我们直接爬取src得到的是一张空图片。
Lazyload在WORDPRESS里是一个插件,实际上是用js写的一个脚本。如果是我们自己搭设的网站想要使用的话可以直接上网下载它的js文件,当然还要jquery库。
下面讲如何在自己搭建的网站上使用这个插件。
先把这个js文件和jquery.js放置到网站根目录的js文件夹下。
首先第一步,加载它们:
< script src="https://www.songbingjia.com/android/jquery.js" type="text/javascript"> < /script>
< script src="https://www.songbingjia.com/android/jquery.lazyload.js" type="text/javascript"> < /script>
第二步,定义图片结构:
< img src="https://www.songbingjia.com/android/img/grey.gif" data-original="img/example.jpg" width="750" heigh="500">
第三步,触发并生效:
$("img.lazy").lazyload();
这样就能实现lazyload的基本功能,当然使用中你还会发现不少问题。
这些问题就需要网站开发者自行去解决了。
【< 技术向; 修正昨天的爬取教程,并介绍一个插件】
欢迎关注微信号:幻象客
文章图片
推荐阅读
- 第02讲(Flink 入门程序 WordCount 和 SQL 实现)
- <C语言;售货员问题
- 百度APP视频播放中的解码优化
- <还记得雪花吗;用画图深入理解递归
- SpringBoot | 3.1 配置数据源及JDBC #yyds干货盘点#
- <简单分析;汉诺塔问题
- saltstack-master配置文件-----详解#yyds干货盘点#
- #yyds干货盘点#jackson学习之七(常用Field注解)
- 设计模式13-- 模板模式怎么弄()