如何用python爬取兩個span之間的內容


Python用做數據處理還是相當不錯的,如果你想要做爬蟲,Python是很好的選擇,它有很多已經寫好的類包,只要調用,即可完成很多復雜的功能,此文中所有的功能都是基於BeautifulSoup這個包。

1 Pyhton獲取網頁的內容(也就是源代碼)

 

 
page = urllib2.urlopen(url)   
contents = page.read()   
#獲得了整個網頁的內容也就是源代碼  
print(contents)  

 

url代表網址,contents代表網址所對應的源代碼,urllib2是需要用到的包,以上三句代碼就能獲得網頁的整個源代碼

2 獲取網頁中想要的內容(先要獲得網頁源代碼,再分析網頁源代碼,找所對應的標簽,然后提取出標簽中的內容)

2.1 以豆瓣電影排名為例子

網址是http://movie.douban.com/top250?format=text,進入網址后就出現如下的圖

                 

現在我需要獲得當前頁面的所有電影的名字,評分,評價人數,鏈接

由上圖畫紅色圓圈的是我想得到的內容,畫藍色橫線的為所對應的標簽,這樣就分析完了,現在就是寫代碼實現,Python提供了很多種方法去獲得想要的內容,在此我使用BeautifulSoup來實現,非常的簡單

 

 
#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 )   

 

  

控制台輸出,你也可以寫入文件中


前三行代碼獲得整個網頁的源代碼,之后開始使用BeautifulSoup進行標簽分析,find_all方法是找到所有此標簽的內容,然后在在此標簽中繼續尋找,如果標簽有特殊的屬性聲明則一步就能找出來,如果沒有特殊的屬性聲明就像此圖中的評價人數前面的標簽只有一個‘span’那么就找到所有的span標簽,按順序從中選相對應的,在此圖中是第三個,所以這種方法可以找特定行或列的內容。代碼比較簡單,很容易就實現了,如果有什么地方不對,還請大家指出,大家共同學習。

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

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM