python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容
利用Python和Beautiful Soup抓取網(wǎng)頁內(nèi)容
Posted on 2012-08-09 00:08 SamWei 閱讀(381) 評論(1) 編輯 收藏
Python 3中提供了url打開模塊urllib.request和HTML的解析模塊html.parser模塊。但是html.parser模塊的功能比較簡單,很難滿足現(xiàn)今解析網(wǎng)頁內(nèi)容的需求。Beautiful Soup 4是一個功能非常強大的HTML和XML文件解析Python庫。而且它提供了非常完善的文檔(http://www.crummy.com/software/BeautifulSoup/bs4/doc/)。
Beautiful Soup 4的安裝及相關(guān)問題
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的代碼轉(zhuǎn)化成Python 3:
$ 2to3-3.2 -w bs4
URL中的中文編碼問題
在URL中經(jīng)常會見到包含中文的情況,如下面這個在去哪兒網(wǎng)上搜索2012-08-09日從北京到麗江的機票的URL:
http://flight.qunar.com/site/oneway_list.htm?searchDepartureAirport=北京&searchArrivalAirport=麗江&searchDepartureTime=2012-08-09
如果直接將這個URL傳給urllib.request.urlopen會導(dǎo)致TypeError。解決方法是構(gòu)造一個參數(shù)名和參數(shù)值的元組,并利用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
網(wǎng)頁內(nèi)容抓取:下面的示例代碼展示了如何抓取百度搜索關(guān)鍵字“網(wǎng)球”時的網(wǎng)頁內(nèi)容。
復(fù)制代碼
1 import urllib.parse
2 import urllib.request
3 from bs4 import BeautifulSoup
4
5 url ='http://www.baidu.com/s'
6 values ={'wd':'網(wǎng)球'}
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')
復(fù)制代碼
標簽: python, BeautifulSoup, Web-Scraping
總結(jié)
以上是生活随笔為你收集整理的python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php大于等于符号怎么打出来_PHP常用
- 下一篇: php引用数据检测,利用单元测试检查PH