標籤: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之間的內容