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

來源:互聯網
上載者:User

標籤:urllib2   import   text   圖片   處理   lis   font   順序   如何   

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

 

 

轉自:51861168

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.