1. 程式人生 > >2/2 資料獲取:網路資料的獲取

2/2 資料獲取:網路資料的獲取

o. 抓取

1. urllib內建模組 — urllib.request

2. Request第三方庫

**Request庫:**

Requests 庫是最簡單、方便和人性化的Python HTTP第三方庫。Requests 官網:http://www.python-requests.org/

基本方法 說明
request.get() 請求獲取指定URL位置的資源,對應HTTP協議的GET方法。

傳送請求獲得一個Response物件,這個物件包含Resquest請求資訊和伺服器的Response響應資訊,而Requests會自動解碼來自伺服器的資訊。假設響應內容是二進位制形式的,可以通過re.content進行解碼,re.text自動推測文字編碼並進行解碼,re.encoding修改文字編碼。

import requests

r = requests.get('https://book.douban.com/subject/1084336/comments/')

r.status_code
Out[4]: 200

r.text
import requests
re = requests.get('http://money.cnn.com/data/dow30') 
print(re.text)

3. Scrapy框架

o. 解析

BeautifulSoup物件 說明
Tag HTML或XML文件中的標籤;Tag屬性的操作和字典一樣;Tag物件最重要的屬性包括name(獲得名字)和attribute()
BeautifulSoup 大部分內容都是Tag
NavigableString Tag當中的字串。NavigableString物件可以用string屬性來表示,取Tag中包含的非屬性的字串。
Comment NavigableString的一個子類
from bs4 import BeautifulSoup
markup = '<p class="title"><b>The Little Prince</b></p>' # 定義一個字串
soup = BeautifulSoup(markup, 'lxml') # 生成一個BeautifulSoup物件的soup

soup.b # 任何的標籤內容都可以用“BeautifulSoup物件.tag”形式訪問得到
Out[22]: <b>The Little Prince</b>

type(soup.b) #檢視型別
Out[23]: bs4.element.Tag
tag = soup.p

tag.name # 通過name屬性獲得名字
Out[25]: 'p'

tag.attrs
Out[26]: {'class': ['title']}

tag['class'] # 通過字典形式獲得屬性
Out[27]: ['title']
tag.string # NavigableString物件可以用string屬性來表示
Out[28]: 'The Little Prince'

type(tag.string)
Out[29]: bs4.element.NavigableString
soup.find_all('b') # 尋找所有b標籤的內容
Out[30]: [<b>The Little Prince</b>]

soup.find()# 只需要找第一個標籤內容
Out[31]: <html><body><p class="title"><b>The Little Prince</b></p></body></html>