下面的幾個模塊,讓在Python中抓取網頁變得很容易:
webbrowser:是從Python自帶的,打開瀏覽器獲取指定頁面
requests:從因特網上下載文件和網頁
Beautiful Soup:解析HTML,即網頁編寫的格式
selenium:啓動並控制一個Web瀏覽器,selenium能夠填寫表單,並模擬鼠標在這個瀏覽器中點擊
11、2利用requests模塊從web下載文件
requests.get()函數接受一個要下載的URL字符串,返回的是Response對象
通過Response對象的status_code屬性,判斷是否請求成功
Response.status_code == requests.codes.ok,True請求成功
另一種方法是在Response對象調用raise_for_status()方法,如果下載出錯,將拋出異常,如果下載成功,就什麼都不做
Response對象的text屬性是下載的內容
11.3、利用BeautifulSoup模塊解析HTML
一:
首先通過requests模塊下載網頁,
然後利用BeautifulSoup模塊解析HTML
>>> import requests,bs4
>>> res = requests.get('http://book.zongheng.com/chapter/457720/7629918.html')#下載主頁,返回Response對象
>>> res.raise_for_status()#判斷是否下載成功
>>> noStarchSoup = bs4.BeautifulSoup(res.text)#將Response對象的text屬性傳遞給 bs4.BeautifulSoup(),將返回的BeautifulSoup對象存在變量中
二:
也可以像bs4.BeautifulSoup()傳遞一個File對象,從硬盤加載一個HTML文件
>>> exampleFile = open('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\fangdongzhuye.html','rb')#以rb模式打開文件
>>> exampleSoup = bs4.BeautifulSoup(exampleFile)
>>> type(exampleSoup)
<class 'bs4.BeautifulSoup'>
備註:::
open()函數打開方式:
“r”開放閱讀(默認)
' w '開放寫作,首先刪除文件
“x”獨家創造開放,失敗如果文件已經存在
“a”開放寫作,附加文件的末尾,如果它的存在
“b”二元模式
“t”文本模式(默認)
“+”打開磁盤文件更新(閱讀和寫作)
BeautifulSoup對象上調用select()方法查找指定元素,返回Tag對象的列表
>>> elems = noStarchSoup.select('div#chapterContent')
>>> type(elems)
<class 'list'>
>>> len(elems)
1
>>> elems[0].getText()#返回匹配的指定內容
>>> elems[0].attrs
{'id': 'chapterContent', 'class': ['content'], 'itemprop': 'acticleBody'}
Tag對象的get()方法很容易從元素中獲取屬性值