<技术向;修正昨天的爬取教程,并介绍一个插件

Posted mb61e66b16b6b98

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<技术向;修正昨天的爬取教程,并介绍一个插件相关的知识,希望对你有一定的参考价值。

昨天的代码有一部分需要修正一下,完整代码应该是这样:


from bs4 import BeautifulSoup
import re
import requests
url = "http://stuu.scnu.edu.cn/articles?paged="
def get_page(url):
   wb_data = 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 =
         "标题":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里。如图(点击可以放大):



<技术向>修正昨天的爬取教程,并介绍一个插件_加载



这样改后就能成功得到我们想要的信息啦:


<技术向>修正昨天的爬取教程,并介绍一个插件_jquery_02


那之前那个结果是怎么回事呢?

这是因为这个网站的图片显示是一种Lazyload的方法,这是一个用来缓冲加载图片的方法,能够避免用户一次性加载太多图片耗费太多流量。这就是为什么昨天我们直接爬取src得到的是一张空图片。


Lazyload在WORDPRESS里是一个插件,实际上是用js写的一个脚本。如果是我们自己搭设的网站想要使用的话可以直接上网下载它的js文件,当然还要jquery库。


下面讲如何在自己搭建的网站上使用这个插件。

先把这个js文件和jquery.js放置到网站根目录的js文件夹下。


首先第一步,加载它们:




<script src="jquery.js" type="text/javascript"></script>
<
script src="jquery.lazyload.js" type="text/javascript"></script>


第二步,定义图片结构:


<img src="img/grey.gif" data-original="img/example.jpg" width="750" heigh="500">


第三步,触发并生效:


$("img.lazy").lazyload();


这样就能实现lazyload的基本功能,当然使用中你还会发现不少问题。

这些问题就需要网站开发者自行去解决了。




欢迎关注微信号:幻象客


<技术向>修正昨天的爬取教程,并介绍一个插件_jquery_03

以上是关于<技术向;修正昨天的爬取教程,并介绍一个插件的主要内容,如果未能解决你的问题,请参考以下文章

验证码的爬取和识别详解

爬虫入门(实用向)

请教一个问题,怎么提高 python 爬虫的爬取效率

pyhont---信息的爬取与提取---requests库

验证码的爬取和识别详解

如果爬取一个小说网站以后,如何做到更新内容的爬取并且存储