您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關做python數據爬蟲怎么爬取數據,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
爬蟲簡介:
爬蟲就是自動獲取網頁內容的程序,例如搜索引擎,Google,Baidu 等,每天都運行著龐大的爬蟲系統,從全世界的網站中爬蟲數據,供用戶檢索時使用。
爬蟲流程:
1、模擬請求網頁。模擬瀏覽器,打開目標網站。
2、獲取數據。打開網站之后,就可以自動化的獲取我們所需要的網站數據。
3、保存數據。拿到數據之后,需要持久化到本地文件或者數據庫等存儲設備中。
數據爬蟲——Requests 使用
Requests 庫是 Python 中發起 HTTP 請求的庫,使用非常方便簡單。
模擬發送 HTTP 請求
發送 GET 請求(當我們用瀏覽器打開豆瓣首頁時,其實發送的最原始的請求就是 GET 請求)
import requests res = requests.get('http://www.douban.com') print(res) print(type(res)) >>> <Response [200]> <class 'requests.models.Response'>
可以看到,我們得到的是一個 Response 對象。
如果我們要獲取網站返回的數據,可以使用 text 或者 content 屬性來獲取
text:是以字符串的形式返回數據
content:是以二進制的方式返回數據
print(type(res.text)) print(res.text) >>> <class 'str'> <!DOCTYPE HTML> <html class=""> <head> <meta charset="UTF-8"> <meta name="google-site-verification" content="ok0wCgT20tBBgo9_zat2iAcimtN4Ftf5ccsh092Xeyw" /> <meta name="description" content="提供圖書、電影、音樂唱片的推薦、評論和價格比較,以及城市獨特的文化生活。"> <meta name="keywords" content="豆瓣,廣播,登陸豆瓣">..... 發送 POST 請求(對于 POST 請求,一般就是提交一個表單) r = requests.post('http://www.xxxx.com', data={"key": "value"})
header 增強
對于有些網站,會拒絕掉沒有攜帶 header 的請求的,所以需要做一些 header 增強。比如:UA,Cookie,host 等等信息。
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36", "Cookie": "your cookie"} res = requests.get('http://www.xxx.com', headers=header)
解析 HTML
現在我們已經獲取到了網頁返回的數據,即 HTML 代碼,下面就需要解析 HTML,來提取其中有效的信息。BeautifulSoup 是 Python 的一個庫,最主要的功能是從網頁解析數據。
from bs4 import BeautifulSoup # 導入 BeautifulSoup 的方法 # 可以傳入一段字符串,或者傳入一個文件句柄。一般都會先用 requests 庫獲取網頁內容,然后使用 soup 解析。 soup = BeautifulSoup(html_doc,'html.parser') # 這里一定要指定解析器,可以使用默認的 html,也可以使用 lxml。 print(soup.prettify()) # 按照標準的縮進格式輸出獲取的 soup 內容。
XPath 定位
XPath 是 XML 的路徑語言,是通過元素和屬性進行導航定位的。幾種常用的表達式
表達式含義node選擇 node 節點的所有子節點/從根節點選取//選取所有當前節點.當前節點..父節點@屬性選取text()當前路徑下的文本內容,一些簡單的例子:
xpath('node') # 選取 node 節點的所有子節點 xpath('/div') # 從根節點上選取 div 元素 xpath('//div') # 選取所有 div 元素 xpath('./div') # 選取當前節點下的 div 元素 xpath('//@id') # 選取所有 id 屬性的節點
關于做python數據爬蟲怎么爬取數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。