如何用python爬取两个span之间的内容

Python用作数据处理仍是至关不错的,若是你想要作爬虫,Python是很好的选择,它有不少已经写好的类包,只要调用,便可完成不少复杂的功能,此文中全部的功能都是基于BeautifulSoup这个包。html

1 Pyhton获取网页的内容(也就是源代码)python

 

 
page = urllib2.urlopen(url)   
contents = page.read()   
#得到了整个网页的内容也就是源代码  
print(contents)  

 

url表明网址,contents表明网址所对应的源代码,urllib2是须要用到的包,以上三句代码就能得到网页的整个源代码学习

2 获取网页中想要的内容(先要得到网页源代码,再分析网页源代码,找所对应的标签,而后提取出标签中的内容)url

2.1 以豆瓣电影排名为例子spa

网址是http://movie.douban.com/top250?format=text,进入网址后就出现以下的图.net

                 

如今我须要得到当前页面的全部电影的名字,评分,评价人数,连接code

由上图画红色圆圈的是我想获得的内容,画蓝色横线的为所对应的标签,这样就分析完了,如今就是写代码实现,Python提供了不少种方法去得到想要的内容,在此我使用BeautifulSoup来实现,很是的简单orm

 

 
#coding:utf-8  
''''' 
@author: jsjxy 
'''  
import urllib2   
import re   
from bs4 import BeautifulSoup  
from distutils.filelist import findall  
  
  
  
page = urllib2.urlopen('http://movie.douban.com/top250?format=text')   
contents = page.read()   
 #print(contents)  
soup = BeautifulSoup(contents,"html.parser")  
print("豆瓣电影TOP250" + "\n" +" 影片名              评分       评价人数     连接 ")    
for tag in soup.find_all('div', class_='info'):    
   # print tag  
    m_name = tag.find('span', class_='title').get_text()        
    m_rating_score = float(tag.find('span',class_='rating_num').get_text())          
    m_people = tag.find('div',class_="star")  
    m_span = m_people.findAll('span')  
    m_peoplecount = m_span[3].contents[0]  
    m_url=tag.find('a').get('href')  
    print( m_name+"        "  +  str(m_rating_score)   + "           " + m_peoplecount + "    " + m_url )   

 

  

控制台输出,你也能够写入文件中htm


前三行代码得到整个网页的源代码,以后开始使用BeautifulSoup进行标签分析,find_all方法是找到全部此标签的内容,而后在在此标签中继续寻找,若是标签有特殊的属性声明则一步就能找出来,若是没有特殊的属性声明就像此图中的评价人数前面的标签只有一个‘span’那么就找到全部的span标签,按顺序从中选相对应的,在此图中是第三个,因此这种方法能够找特定行或列的内容。代码比较简单,很容易就实现了,若是有什么地方不对,还请你们指出,你们共同窗习。blog

源代码地址:http://download.csdn.net/detail/danielntz/9577390

 

 

转自:https://blog.csdn.net/danielntz/article/details/51861168

相关文章
相关标签/搜索