利用Python和Beautiful Soup抓取網頁內容

來源:互聯網
上載者:User

      Python 3中提供了url開啟模組urllib.request和HTML的解析模組html.parser模組。但是html.parser模組的功能比較簡單,很難滿足現今解析網頁內容的需求。Beautiful Soup 4是一個功能非常強大的HTML和XML檔案解析Python庫。而且它提供了非常完善的文檔(http://www.crummy.com/software/BeautifulSoup/bs4/doc/)。

 

Beautiful Soup 4的安裝及相關問題

      Beautiful Soup的最新版本是4.1.1可以在此擷取(http://www.crummy.com/software/BeautifulSoup/bs4/download/)。我使用的是Mac OSX,在這個平台上安裝Beautiful Soup,只需解壓安裝包並運行setup.py檔案即可:

$ python3 setup.py install

      安裝過程中如果得到SyntaxError “Invalid syntax” on the line ROOT_TAG_NAME = u'[document]',需要將Python 2的代碼轉化成Python 3:

$ 2to3-3.2 -w bs4

 

URL中的中文編碼問題

      在URL中經常會見到包含中文的情況,如下面這個在去哪兒網上搜尋2012-08-09日從北京到麗江的機票的URL:

http://flight.qunar.com/site/oneway_list.htm?searchDepartureAirport=北京&searchArrivalAirport=麗江&searchDepartureTime=2012-08-09

      如果直接將這個URL傳給urllib.request.urlopen會導致TypeError。解決方案是構造一個參數名和參數值的元組,並利用urllib.parse.urlencode方法對其編碼。範例程式碼如下:

1 url ='http://flight.qunar.com/site/oneway_list.htm'2 values ={'searchDepartureAirport':'北京','searchArrivalAirport':'麗江','searchDepartureTime':'2012-07-25'}3 encoded_param = urllib.parse.urlencode(values)4 full_url = url +'?'+ encoded_param

 

網頁內容抓取:下面的範例程式碼展示了如何抓取百度搜尋索引鍵“網球”時的網頁內容。

 1 import urllib.parse 2 import urllib.request 3 from bs4 import BeautifulSoup 4  5 url ='http://www.baidu.com/s' 6 values ={'wd':'網球'} 7 encoded_param = urllib.parse.urlencode(values) 8 full_url = url +'?'+ encoded_param 9 response = urllib.request.urlopen(full_url)10 soup =BeautifulSoup(response)11 soup.find_all('a')
相關文章

聯繫我們

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