做python數(shù)據(jù)爬蟲(chóng)怎么爬取數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)做python數(shù)據(jù)爬蟲(chóng)怎么爬取數(shù)據(jù),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

十載的任丘網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整任丘建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“任丘網(wǎng)站設(shè)計(jì)”,“任丘網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

爬蟲(chóng)簡(jiǎn)介:

爬蟲(chóng)就是自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序,例如搜索引擎,Google,Baidu 等,每天都運(yùn)行著龐大的爬蟲(chóng)系統(tǒng),從全世界的網(wǎng)站中爬蟲(chóng)數(shù)據(jù),供用戶檢索時(shí)使用。

爬蟲(chóng)流程:

1、模擬請(qǐng)求網(wǎng)頁(yè)。模擬瀏覽器,打開(kāi)目標(biāo)網(wǎng)站。

2、獲取數(shù)據(jù)。打開(kāi)網(wǎng)站之后,就可以自動(dòng)化的獲取我們所需要的網(wǎng)站數(shù)據(jù)。

3、保存數(shù)據(jù)。拿到數(shù)據(jù)之后,需要持久化到本地文件或者數(shù)據(jù)庫(kù)等存儲(chǔ)設(shè)備中。

數(shù)據(jù)爬蟲(chóng)——Requests 使用

Requests 庫(kù)是 Python 中發(fā)起 HTTP 請(qǐng)求的庫(kù),使用非常方便簡(jiǎn)單。

模擬發(fā)送 HTTP 請(qǐng)求

發(fā)送 GET 請(qǐng)求(當(dāng)我們用瀏覽器打開(kāi)豆瓣首頁(yè)時(shí),其實(shí)發(fā)送的最原始的請(qǐng)求就是 GET 請(qǐng)求)

import requests
res = requests.get('http://www.douban.com')
print(res)
print(type(res))
>>>
<Response [200]>
<class 'requests.models.Response'>

可以看到,我們得到的是一個(gè) Response 對(duì)象。

如果我們要獲取網(wǎng)站返回的數(shù)據(jù),可以使用 text 或者 content 屬性來(lái)獲取

text:是以字符串的形式返回?cái)?shù)據(jù)

content:是以二進(jìn)制的方式返回?cái)?shù)據(jù)

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="提供圖書(shū)、電影、音樂(lè)唱片的推薦、評(píng)論和價(jià)格比較,以及城市獨(dú)特的文化生活。">
<meta name="keywords" content="豆瓣,廣播,登陸豆瓣">.....
發(fā)送 POST 請(qǐng)求(對(duì)于 POST 請(qǐng)求,一般就是提交一個(gè)表單)
r = requests.post('http://www.xxxx.com', data={"key": "value"})

header 增強(qiáng)

對(duì)于有些網(wǎng)站,會(huì)拒絕掉沒(méi)有攜帶 header 的請(qǐng)求的,所以需要做一些 header 增強(qiáng)。比如: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

現(xiàn)在我們已經(jīng)獲取到了網(wǎng)頁(yè)返回的數(shù)據(jù),即 HTML 代碼,下面就需要解析 HTML,來(lái)提取其中有效的信息。BeautifulSoup 是 Python 的一個(gè)庫(kù),最主要的功能是從網(wǎng)頁(yè)解析數(shù)據(jù)。

from bs4 import BeautifulSoup  # 導(dǎo)入 BeautifulSoup 的方法
# 可以傳入一段字符串,或者傳入一個(gè)文件句柄。一般都會(huì)先用 requests 庫(kù)獲取網(wǎng)頁(yè)內(nèi)容,然后使用 soup 解析。
soup = BeautifulSoup(html_doc,'html.parser')  # 這里一定要指定解析器,可以使用默認(rèn)的 html,也可以使用 lxml。
print(soup.prettify())  # 按照標(biāo)準(zhǔn)的縮進(jìn)格式輸出獲取的 soup 內(nèi)容。

XPath 定位

XPath 是 XML 的路徑語(yǔ)言,是通過(guò)元素和屬性進(jìn)行導(dǎo)航定位的。幾種常用的表達(dá)式

表達(dá)式含義node選擇 node 節(jié)點(diǎn)的所有子節(jié)點(diǎn)/從根節(jié)點(diǎn)選取//選取所有當(dāng)前節(jié)點(diǎn).當(dāng)前節(jié)點(diǎn)..父節(jié)點(diǎn)@屬性選取text()當(dāng)前路徑下的文本內(nèi)容,一些簡(jiǎn)單的例子:

xpath('node')  # 選取 node 節(jié)點(diǎn)的所有子節(jié)點(diǎn)
xpath('/div')  # 從根節(jié)點(diǎn)上選取 div 元素
xpath('//div')  # 選取所有 div 元素
xpath('./div')  # 選取當(dāng)前節(jié)點(diǎn)下的 div 元素
xpath('//@id')  # 選取所有 id 屬性的節(jié)點(diǎn)

關(guān)于做python數(shù)據(jù)爬蟲(chóng)怎么爬取數(shù)據(jù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前名稱(chēng):做python數(shù)據(jù)爬蟲(chóng)怎么爬取數(shù)據(jù)
URL標(biāo)題:http://bm7419.com/article26/pscgjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、虛擬主機(jī)、手機(jī)網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站收錄、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)