python cralwer (爬蟲)心得

來源:互聯網
上載者:User

標籤:python   tools   

最近用python做了個小crawler, 可以自動整理一些網站的內容,推送到當地檔案中,做個小小的總結。


主要lib就是urllib 和 beautifulsoup.


urllib和urllib2是很方便的網頁提取庫,核心就是發送各種自訂的url request,然後可以返回網頁內容。 最簡單的函數,判定一個網頁是否存在:

def isUrlExists(url):  req = urllib2.Request(url, headers=headers)  try:    urllib2.urlopen(req)  except:    return 0;  return 1;

headers可以自訂,也可以留空。自訂的主要目的是模仿成一般瀏覽器的header,繞過一些網站對crawler的封鎖。

如果想獲得網站內容,並且擷取返回異常的內容,可以這樣:

def fetchLink(url):  req = urllib2.Request(url, headers=headers)  try:    response = urllib2.urlopen(req)  except urllib2.URLError, e:    print 'Got Url Error while retrieving: ', url, ' and the exception is: ', e.reason  except urllib2.HTTPError, e:    print 'Got Http Error while retrieving: ', url,  ' with reponse code: ', e.getcode(), ' and exception: ', e.reason  else:    htmlContent = response.read()    return htmlContent


以上代碼直接返回html。

BeautifulSoup (documentaion: http://www.crummy.com/software/BeautifulSoup/bs4/doc/ )是一個簡潔的html分析工具庫。獲得了html後,可以直接用python內建的Regex來獲得想要的資訊, 但是略顯繁瑣。Beautifulshop直接將html 用類似json的方法分析好,形成標準的樹狀結構,可以直接進行擷取元素的操作。另外,還支援元素的搜尋等等。


  content = bs4.BeautifulSoup(content,from_encoding='GB18030')  posts = content.find_all(class_='post-content')  for post in posts:    postText = post.find(class_='entry-title').get_text()

這個例子中content先被轉化為bs4對象,然後找到所有class=post-content的區塊,再獲得其中class=entry-title的文字。注意,第一行中parse的時候可以選擇encoding,這裡是用的是簡體中文。


以上都是html text內容的擷取。如果其中有圖片,以上代碼會直接產生圖片串連到原來的圖片位置。 如果需要進行任何下載,可以使用urlretrieve方法。這裡就不多說了。


python cralwer (爬蟲)心得

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.