最近发现一个很好的网站,0dayin,资源是非常的多。资源有哪些呢: windows,mac下的各种工具和软件。各种电子书,包含科技,小说,杂志(居然还有类似花花公子那种),可以看多国外的最新杂志。当然还有音乐,高清电影,还有各种外国最近的IT教程,但是这个百度云下载的话只有网站会员才行,不然只能使用其它链接。还有各个平台下的游戏,PC,Linux,XBOX,PS3等。资源种类真的可以用琳琅满目来形容,而且主要是更新真的很快,一天更新好多。

信息一多,慢慢翻麻烦耗时,而且不是所有信息都想关注。于是谋生了用爬虫爬取自己想要的信息。我目前想关注的信息只有资源类别(比如windows,game,Ebook等),资源标题,发布时间,资源的简介四个东西。看了下网页源码,有规律,解析不难。


使用BeautifulSoup爬取“0dayin”网站的资源

上图中

上图中椭圆圈出的是我想获得的信息,方块圈出的是一个找寻信息的逻辑。通过分析网页源码发现,所有的最新发布的每个资源都在一个article class="excerpt"段落中,我们可以使用find_all找出所有的个article class="excerpt",然后再在每个里面找寻想要的信息,比如资源类别,可以是article.header.a.next。资源标题是article.h2.string。发布时间是article.p.find('i', class_="icon-time icon12").next。资源简介是article.p.find_next_sibling().string。最后我想获取的是最新发布的10页资源信息,可以用循环实现,因为每个页面的Url很简单,只需在http://www.0dayin.com/page/后面添加页数。比如第二页就是http://www.0dayin.com/page/2.下面是源代码,用BeautifulSoup实现真的超级方便,可能以后会进行拓展,所以当前版本为0.1。


[python] view plain copy
 print?
  1. #coding:utf-8  
  2. #version: 0.1  
  3. #note:实现了查找0dayin最新发布的10页资源。  
  4. import urllib.request  
  5.   
  6. from bs4 import BeautifulSoup  
  7.   
  8. for i in range(1,11):  
  9.     url = "http://www.0dayin.com/page/" + str(i)  #每一页的Url只需在后面加上整数就行  
  10.     page = urllib.request.urlopen(url)  
  11.     soup_packtpage = BeautifulSoup(page)  
  12.     page.close()  
  13.     num = " The Page of: " + str(i)     #标注当前资源属于第几页  
  14.     print(num)  
  15.     print("#"*40)  
  16.     for article in soup_packtpage.find_all('article'class_="excerpt"):    #使用find_all查找出当前页面发布的所有最新资源  
  17.         print("Category:".ljust(20), end=''), print(article.header.a.next)   #category  
  18.         print("Title:".ljust(20), end=''), print(article.h2.string)       #title      
  19.         print("Pulished_time:".ljust(19), end=''), print(article.p.find('i'class_="icon-time icon12").next)  #published_time  
  20.         print("Note:",end=''), print(article.p.find_next_sibling().string)   #note  
  21.         print('-'*50)  
  22.   
  23. input() #等待输入,为了不让控制台运行后立即结束。  

下面是运行成功效果图:

使用BeautifulSoup爬取“0dayin”网站的资源


相关文章:

  • 2022-12-23
  • 2021-10-13
  • 2021-04-04
  • 2021-05-28
  • 2021-12-21
  • 2021-11-25
猜你喜欢
  • 2021-05-20
  • 2022-12-23
  • 2021-04-08
  • 2021-06-01
  • 2022-12-23
  • 2022-01-02
  • 2021-09-22
相关资源
相似解决方案