成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

爬蟲初級操作(一)

Ocean / 2534人閱讀

摘要:一個對應(yīng)相應(yīng)的狀態(tài)碼,狀態(tài)碼表示協(xié)議所返回的響應(yīng)的狀態(tài)。下面將狀態(tài)碼歸結(jié)如下繼續(xù)客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求。繼續(xù)處理由擴(kuò)展的狀態(tài)碼,代表處理將被繼續(xù)執(zhí)行。處理方式丟棄該狀態(tài)碼不被的應(yīng)用程序直接使用,只是作為類型回應(yīng)的默認(rèn)解釋。

本篇內(nèi)容為 python 網(wǎng)絡(luò)爬蟲初級操作,內(nèi)容主要有以下 3 部分:

python 關(guān)于爬蟲的一些基本操作和知識

靜態(tài)網(wǎng)頁抓取

動態(tài)網(wǎng)頁抓取


基本操作和知識

通過下面介紹的網(wǎng)絡(luò)爬蟲的流程,我們可以看到包含的知識點(diǎn)有哪些:

獲取網(wǎng)頁——爬取到了整個頁面
Rquest, urllib, selenium
多進(jìn)程多線程抓取、登錄抓取、突破IP封禁和服務(wù)器抓取

解析網(wǎng)頁(提取數(shù)據(jù))——從頁面中找自己需要的數(shù)據(jù)
Re 正則表達(dá)式,BeautifulSoup 和 lxml
解決中文亂碼

存儲數(shù)據(jù)
存入txt文件和csv文件
存入 MySQL 數(shù)據(jù)庫和 MongoDB 數(shù)據(jù)庫

我們先來看一個簡單的爬蟲,代碼及注釋如下:

import requests
from bs4 import BeautifulSoup

link = "http://www.santostang.com/"
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"}    #用request的headers偽裝成瀏覽器訪問
r = requests.get(link, headers=headers) # r是requests的Response回復(fù)對象
#print(r.text)
# 獲取了博客首頁的HTML代碼

# 把HTML代碼轉(zhuǎn)化為soup對象
soup = BeautifulSoup(r.text, "lxml")    #使用BeautifulSoup解析這段代碼
title = soup.find("h1", class_="post-title").a.text.strip()
print(title)
# 從整個網(wǎng)頁中提取第一篇文章的標(biāo)題

with open("title.txt", "a+") as f:
    f.write(title)
    f.close()

這樣就完成了一次爬蟲,下面我們分為靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁兩部分來進(jìn)行具體的學(xué)習(xí)。

靜態(tài)網(wǎng)頁抓取

響應(yīng)狀態(tài)碼

返回200,表示請求成功。
返回4XX,表示客戶端錯誤。
返回5XX,表示服務(wù)器錯誤響應(yīng)。

一個 HTTPError 對應(yīng)相應(yīng)的狀態(tài)碼,HTTP 狀態(tài)碼表示 HTTP 協(xié)議所返回的響應(yīng)的狀態(tài)。
下面將狀態(tài)碼歸結(jié)如下:

100:繼續(xù) ?客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請求??蛻舳藨?yīng)當(dāng)繼續(xù)發(fā)送請求的剩余部分,或者如果請求已經(jīng)完成,忽略這個響應(yīng)。
101: 轉(zhuǎn)換協(xié)議 ?在發(fā)送完這個響應(yīng)最后的空行后,服務(wù)器將會切換到在Upgrade 消息頭中定義的那些協(xié)議。只有在切換新的協(xié)議更有好處的時候才應(yīng)該采取類似措施。
102:繼續(xù)處理 ? 由WebDAV(RFC 2518)擴(kuò)展的狀態(tài)碼,代表處理將被繼續(xù)執(zhí)行。
200:請求成功 ? ? ?處理方式:獲得響應(yīng)的內(nèi)容,進(jìn)行處理
201:請求完成,結(jié)果是創(chuàng)建了新資源。新創(chuàng)建資源的URI可在響應(yīng)的實(shí)體中得到 ? ?處理方式:爬蟲中不會遇到
202:請求被接受,但處理尚未完成 ? ?處理方式:阻塞等待
204:服務(wù)器端已經(jīng)實(shí)現(xiàn)了請求,但是沒有返回新的信 息。如果客戶是用戶代理,則無須為此更新自身的文檔視圖。 ? ?處理方式:丟棄
300:該狀態(tài)碼不被HTTP/1.0的應(yīng)用程序直接使用, 只是作為3XX類型回應(yīng)的默認(rèn)解釋。存在多個可用的被請求資源。?? ?處理方式:若程序中能夠處理,則進(jìn)行進(jìn)一步處理,如果程序中不能處理,則丟棄
301:請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源?? ?處理方式:重定向到分配的URL
302:請求到的資源在一個不同的URL處臨時保存 ?? ?處理方式:重定向到臨時的URL
304:請求的資源未更新 ?? ?處理方式:丟棄
400:非法請求 ?? ?處理方式:丟棄
401:未授權(quán) ?? ?處理方式:丟棄
403:禁止 ?? ?處理方式:丟棄
404:沒有找到 ?? ?處理方式:丟棄
500:服務(wù)器內(nèi)部錯誤 ?服務(wù)器遇到了一個未曾預(yù)料的狀況,導(dǎo)致了它無法完成對請求的處理。一般來說,這個問題都會在服務(wù)器端的源代碼出現(xiàn)錯誤時出現(xiàn)。
501:服務(wù)器無法識別 ?服務(wù)器不支持當(dāng)前請求所需要的某個功能。當(dāng)服務(wù)器無法識別請求的方法,并且無法支持其對任何資源的請求。
502:錯誤網(wǎng)關(guān) ?作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,從上游服務(wù)器接收到無效的響應(yīng)。
503:服務(wù)出錯 ? 由于臨時的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請求。這個狀況是臨時的,并且將在一段時間以后恢復(fù)。

HTTPError 實(shí)例產(chǎn)生后會有一個 code 屬性,這就是是服務(wù)器發(fā)送的相關(guān)錯誤號。
3 開頭的代號可以被處理,并且 100-299 范圍的號碼指示成功,所以你只能看到 400-599 的錯誤號碼。

HTTPError 的父類是 URLError,根據(jù)編程經(jīng)驗(yàn),父類的異常應(yīng)當(dāng)寫到子類異常的后面,如果子類捕獲不到,那么可以捕獲父類的異常。

傳遞URL參數(shù):
為了請求特定的數(shù)據(jù),在URL的查詢字符串中加入某些數(shù)據(jù)。如果是自己構(gòu)建 URL 數(shù)據(jù)一般會跟在一個問號后面,以鍵/值的形式放在URL中。

在Request 中,可以直接把這些參數(shù)保存在字典中,用 params 構(gòu)建至URL中。

舉例如下:
key_dict={"key1":"value1","key2":"value2"}
r=requests.get("http://httpbin.org/get",params=key_dict)

運(yùn)行,得到結(jié)果:URL 已正確編碼為http://httpbin.org/get?key1=v...

定制請求頭:
請求頭 Headers 提供了關(guān)于請求、響應(yīng)或其他發(fā)送實(shí)體的信息。如果沒有指定請求頭 或請求的請求頭和實(shí)際網(wǎng)頁不一致,就可能無法返回正確的結(jié)果。

Requests 并不會基于定制的請求 頭Headers 的具體情況改變自己的行為,只是在最后的請求中,所有的請求頭信息都會被傳遞進(jìn)去。

發(fā)送POST請求:
除發(fā)送GET請求外,有時發(fā)送一些編碼為表單形式的數(shù)據(jù)(如在登錄的時候請求就為POST)
——如果用GET請求,密碼就會顯示在URL中,不安全
——如果要實(shí)現(xiàn)POST請求,只需要傳遞一個字典給 Requests中的 data參數(shù),這個數(shù)據(jù)字典就會在發(fā)出請求時自動編碼為表單形式。

超時:
用 Requests 在 timeout 參數(shù)設(shè)定的秒數(shù)結(jié)束之后停止等待響應(yīng)。一般把這個值設(shè)置為 20 秒。

相應(yīng)代碼如下:

import requests

#傳遞URL參數(shù)
r = requests.get("http://www.santostang.com/")
#返回一個名為 r 的 response對象

print("文本編碼:", r.encoding)
print("響應(yīng)狀態(tài)碼:", r.status_code)
print("字符串方式的響應(yīng)體:", r.text)


key_dict = {"key1": "value1", "key2": "value2"}
r = requests.get("http://httpbin.org/get", params=key_dict)
print("URL 已正確編碼:", r.url)
print("字符串方式的響應(yīng)體:
", r.text)


#定制請求頭
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
"Host":"www.santostang.com"
}

r = requests.get("http://www.santostang.com", headers=headers)
print("響應(yīng)狀態(tài)碼:", r.status_code)



key_dict = {"key1": "value1", "key2": "value2"}
r = requests.post("http://httpbin.org/post", data=key_dict)
print(r.text)
#from變量的值為key_dict輸入的值,一個POST請求發(fā)送成功

link = "http://www.santostang.com/"
r = requests.get(link, timeout=0.01)
#異常:時間限制0.01秒內(nèi),連接到地址為www.santostang.com的時間已到。
動態(tài)網(wǎng)頁抓取

在使用 JavaScript 時,很多內(nèi)容并不會出現(xiàn)在 HTML 源代碼中,爬取靜態(tài)網(wǎng)頁的技術(shù)可能無法正常使用。用到以下兩種技術(shù):

通過瀏覽器審查元素解析真實(shí)網(wǎng)頁地址

使用selenium模擬瀏覽器的方法

異步更新技術(shù)——AJAX(Asynchronous JavaScript And XML):
通過在后臺與服務(wù)器進(jìn)行少量的數(shù)據(jù)交換就可以使網(wǎng)頁實(shí)現(xiàn)異步更新。即 可以在不重新加載網(wǎng)頁的情況下對網(wǎng)頁的某部分進(jìn)行更新。

有時候我們在用requests抓取頁面的時候,得到的結(jié)果可能和在瀏覽器中看到的不一樣:在瀏覽器中可以看到正常顯示的頁面數(shù)據(jù),但是使用requests得到的結(jié)果并沒有。

這是因?yàn)閞equests獲取的都是原始的HTML文檔,而瀏覽器中的頁面則是經(jīng)過JavaScript處理數(shù)據(jù)后生成的結(jié)果,這些數(shù)據(jù)的來源有多種:

通過 Ajax 加載的,可能是包含在 HTML 文檔中的
數(shù)據(jù)加載是一種異步加載方式,原始的頁面最初不會包含某些數(shù)據(jù),原始頁面加載完后,會再向服務(wù)器請求某個接口獲取數(shù)據(jù),然后數(shù)據(jù)才被處理從而呈現(xiàn)到網(wǎng)頁上,這其實(shí)就是發(fā)送了一個 Ajax 請求。

如果遇到這樣的頁面,直接利用 requests 等庫來抓取原始頁面,是無法獲取到有效數(shù)據(jù)的,這時需要分析網(wǎng)頁后臺向接口發(fā)送的 Ajax 請求,如果可以用 requests 來模擬 Ajax 請求,那么就可以成功抓取了。

經(jīng)過JavaScript和特定算法計(jì)算后生成的。

數(shù)據(jù)傳送分為 POST 和 GET 兩種方式:
最重要的區(qū)別是 GET 方式是直接以鏈接形式訪問,鏈接中包含了所有的參數(shù),當(dāng)然如果包含了密碼的話是一種不安全的選擇,不過你可以直觀地看到自己提交了什么內(nèi)容。

POST則不會在網(wǎng)址上顯示所有的參數(shù),不過如果你想直接查看提交了什么就不太方便了。

通過 selenium 模擬瀏覽器抓取
對于那些很難找到真實(shí)地址的 URL 或者很冗長的,使用瀏覽器渲染引擎:直接用瀏覽器在顯示網(wǎng)頁時解析HTML、應(yīng)用CSS樣式、執(zhí)行JavaScript的語句。

在爬蟲過程中,會打開一個瀏覽器加載該網(wǎng)頁,自動操作瀏覽器瀏覽各個網(wǎng)頁,順便把數(shù)據(jù)抓下來。

用 Selenium 控制瀏覽器加載的內(nèi)容,從而加快 Selenium 的爬取速度:

控制 CSS 的加載

控制圖片文件的顯示

控制JavaScript的運(yùn)行

學(xué)習(xí)完動態(tài)網(wǎng)頁加載后,我們來看一個使用 Ajax 加載評論的網(wǎng)頁,如何爬取到評論,代碼如下:

import json
import requests

def single_page_comment(link):
#link = "https://api-zero.livere.com/v1/comments/list?callback=jQuery1124030126086598094437_1529672300768&limit=10&repSeq=3871836&requestPath=%2Fv1%2Fcomments%2Flist&consumerSeq=1020&livereSeq=28583&smartloginSeq=5154&_=1529672300770"
    headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"}
    r = requests.get(link, headers=headers)
    #它是json數(shù)據(jù)
    #print(r.text)

    json_string = r.text
    json_string = json_string[json_string.find("{"):-2]     #僅僅提取字符串中符合json格式的部分

    #使用 json.loads 把字符串格式的響應(yīng)體數(shù)據(jù)轉(zhuǎn)化為json數(shù)據(jù)
    json_data = json.loads(json_string)
    #利用 json 數(shù)據(jù)的結(jié)構(gòu),提取到評論的列表comment_list
    comment_list = json_data["results"]["parents"]

    for eachone in comment_list:
        message = eachone["content"]
        print(message)



# 截止測試時共69條評論
for page in range(1,7):
    link1 = "https://api-zero.livere.com/v1/comments/list?callback=jQuery1124030126086598094437_1529672300768&limit=10&offset="
    link2 = "&repSeq=3871836&requestPath=%2Fv1%2Fcomments%2Flist&consumerSeq=1020&livereSeq=28583&smartloginSeq=5154&_=1529672300773"
    page_str = str(page)
    link = link1 + page_str + link2
    print(link)
    single_page_comment(link)

最后我們看一個豆瓣電影 TOP250 的代碼(源代碼可至文末下載):

import requests
from bs4 import BeautifulSoup

def get_movies():
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
        "Host": "movie.douban.com"
    }
    for i in range(0, 10):
        link = "https://movie.douban.com/top250?start=" + str(i * 25)
        r = requests.get(link, headers=headers, timeout=10)
        print(str(i+1), "頁響應(yīng)狀態(tài)碼:", r.status_code)
        print(r.text)

# 得到網(wǎng)頁的HTML代碼
# get_movies()


movie_list = []
def get_movies():
    headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
            "Host": "movie.douban.com"
        }


    for i in range(0, 10):
        link = "https://movie.douban.com/top250?start=" + str(i * 25)
        r = requests.get(link, headers=headers, timeout=10)
        print(str(i+1), "頁響應(yīng)狀態(tài)碼:", r.status_code)

        soup = BeautifulSoup(r.text, "lxml")
        div_list = soup.find_all("div", class_="hd")
        for each in div_list:
            movie = each.a.span.text.strip()
            movie_list.append(movie)

    return movie_list

movies = get_movies()
print(movie_list)


得到結(jié)果:

["肖申克的救贖", "霸王別姬", "這個殺手不太冷", "阿甘正傳", "美麗人生", "千與千尋", "泰坦尼克號", "辛德勒的名單", "盜夢空間", "機(jī)器人總動員", 
"三傻大鬧寶萊塢", "海上鋼琴師", "忠犬八公的故事", "放牛班的春天", "大話西游之大圣娶親", "楚門的世界", "龍貓", "教父", "星際穿越", "熔爐", 
"觸不可及", "亂世佳人", "無間道", "當(dāng)幸福來敲門", "天堂電影院", "怦然心動", "十二怒漢", "少年派的奇幻漂流", "蝙蝠俠:黑暗騎士", "鬼子來了", 
"搏擊俱樂部", "活著", "指環(huán)王3:王者無敵", "瘋狂動物城", "天空之城", "大話西游之月光寶盒", "羅馬假日", "飛屋環(huán)游記", "控方證人", "竊聽風(fēng)暴", 
"兩桿大煙槍", "飛越瘋?cè)嗽?, "聞香識女人", "哈爾的移動城堡", "辯護(hù)人", "海豚灣", "V字仇殺隊(duì)", "死亡詩社", "教父2", "美麗心靈",
"指環(huán)王2:雙塔奇兵", "指環(huán)王1:魔戒再現(xiàn)", "飲食男女", "情書", "摔跤吧!爸爸", "美國往事", "獅子王", "鋼琴家", "素媛", "天使愛美麗", 
"小鞋子", "七宗罪", "被嫌棄的松子的一生", "致命魔術(shù)", "音樂之聲", "本杰明·巴頓奇事", "勇敢的心", "西西里的美麗傳說", "剪刀手愛德華", "低俗小說", 
"看不見的客人", "黑客帝國", "拯救大兵瑞恩", "沉默的羔羊", "讓子彈飛", "入殮師", "蝴蝶效應(yīng)", "春光乍泄", "大鬧天宮", "瑪麗和馬克思", 
"末代皇帝", "心靈捕手", "陽光燦爛的日子", "幽靈公主", "第六感", "重慶森林", "布達(dá)佩斯大飯店", "禁閉島", "哈利·波特與魔法石", "狩獵", 
"大魚", "貓鼠游戲", "致命ID", "斷背山", "射雕英雄傳之東成西就", "甜蜜蜜", "一一", "告白", "陽光姐妹淘", "加勒比海盜", 
"穿條紋睡衣的男孩", "上帝之城", "摩登時代", "阿凡達(dá)", "愛在黎明破曉前", "消失的愛人", "風(fēng)之谷", "愛在日落黃昏時", "側(cè)耳傾聽", "超脫", 
"紅辣椒", "恐怖直播", "倩女幽魂", "小森林 夏秋篇", "馴龍高手", "菊次郎的夏天", "喜劇之王", "幸福終點(diǎn)站", "螢火蟲之墓", "借東西的小人阿莉埃蒂", 
"七武士", "歲月神偷", "殺人回憶", "神偷奶爸", "電鋸驚魂", "貧民窟的百萬富翁", "喜宴", "真愛至上", "海洋", "諜影重重3", 
"東邪西毒", "記憶碎片", "怪獸電力公司", "雨人", "黑天鵝", "瘋狂原始人", "盧旺達(dá)飯店", "燃情歲月", "英雄本色", "虎口脫險", 
"小森林 冬春篇", "7號房的禮物", "哈利·波特與死亡圣器(下)", "傲慢與偏見", "荒蠻故事", "心迷宮", "螢火之森", "戀戀筆記本", "完美的世界", "教父3", 
"縱橫四海", "花樣年華", "海邊的曼徹斯特", "玩具總動員3", "猜火車", "魂斷藍(lán)橋", "穿越時空的少女", "雨中曲", "唐伯虎點(diǎn)秋香", "時空戀旅人", 
"超能陸戰(zhàn)隊(duì)", "請以你的名字呼喚我", "蝙蝠俠:黑暗騎士崛起", "二十二", "我是山姆", "人工智能", "冰川時代", "浪潮", "朗讀者", "香水", 
"爆裂鼓手", "羅生門", "未麻的部屋", "一次別離", "追隨", "血戰(zhàn)鋼鋸嶺", "撞車", "可可西里", "恐怖游輪", "戰(zhàn)爭之王", "被解救的姜戈", 
"地球上的星星", "達(dá)拉斯買家俱樂部", "夢之安魂曲", "牯嶺街少年殺人事件", "房間", "頭腦特工隊(duì)", "魔女宅急便", "諜影重重", "諜影重重2", "驚魂記", 
"小蘿莉的猴神大叔", "忠犬八公物語", "青蛇", "再次出發(fā)之紐約遇見你", "阿飛正傳", "模仿游戲", "東京物語", "哪吒鬧海", "碧海藍(lán)天", "一個叫歐維的男人決定去死", 
"完美陌生人", "你的名字。", "無人知曉", "末路狂花", "秒速5厘米", "源代碼", "終結(jié)者2:審判日", "黑客帝國3:矩陣革命", "新龍門客棧", "綠里奇跡", 
"海盜電臺", "這個男人來自地球", "勇闖奪命島", "城市之光", "卡薩布蘭卡", "變臉", "無恥混蛋", "初戀這件小事", "發(fā)條橙", "E.T. 外星人", 
"黃金三鏢客", "愛在午夜降臨前", "荒野生存", "美國麗人", "遷徙的鳥", "英國病人", "無敵破壞王", "步履不停", "瘋狂的石頭", "燕尾蝶", 
"非常嫌疑犯", "勇士", "彗星來的那一夜", "叫我第一名", "國王的演講", "穆赫蘭道", "血鉆", "聚焦", "海街日記", "上帝也瘋狂", 
"槍火", "我愛你", "遺愿清單", "大衛(wèi)·戈?duì)柕囊簧?, "黑鷹墜落", "荒島余生", "藍(lán)色大門", "千鈞一發(fā)", "愛·回家"]

本文為崔慶才博客和唐松的《Python網(wǎng)絡(luò)爬蟲從入門到實(shí)踐》學(xué)習(xí)記錄與總結(jié),具體內(nèi)容可參考二者。博主在學(xué)習(xí)過程中的練習(xí)代碼也已上傳至 GitHub。

不足之處,歡迎指正。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41925.html

相關(guān)文章

  • python爬蟲爬取github所有follwers初級

    摘要:按照同樣的方式扒取所有的自己的用戶。但是為了尊重人家隱私權(quán),好吧,就這樣吧,我也不能做啥。 這幾天我很焦慮,受不了那些先follow我,等我follow回去后又unfollow的人,因?yàn)槭撬麄兿萬ollow我的,我出于人道主義想著互粉一下的,結(jié)果這么對我,太不厚道了。github又不像微博那樣有互粉標(biāo)志,這真的整得我很心煩,于是想著寫一個爬蟲,把這些壞人揪出來~第一步,當(dāng)然是放出代碼啦...

    stormgens 評論0 收藏0
  • 前端培訓(xùn)-中級階段(10)- 同源策略(2019-08-15期)

    摘要:同源策略是什么同源策略是瀏覽器的一個安全功能,不同源的數(shù)據(jù)禁止訪問。或許你可以說驗(yàn)證,在瀏覽器沒有同源策略的情況下這些都可以繞過去??偨Y(jié)同源策略是蠻好的,防御了大部分的攻擊。 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠(yuǎn)遠(yuǎn)不止這些。前端小課堂(HTML/CSS/JS),本著提升技術(shù)水平,打牢基礎(chǔ)知識的中心思...

    heartFollower 評論0 收藏0
  • 爬蟲初級操作(二)

    摘要:本篇內(nèi)容為網(wǎng)絡(luò)爬蟲初級操作的簡單介紹,內(nèi)容主要有以下部分解析網(wǎng)頁數(shù)據(jù)庫解析網(wǎng)頁一般來說,解析網(wǎng)頁有三種方式正則表達(dá)式。關(guān)于,我們最后再來看一個實(shí)戰(zhàn)項(xiàng)目爬取北京二手房價格。代碼如下第頁這樣就成功爬取了安居客上前頁的北京二手房價格。 本篇內(nèi)容為 python 網(wǎng)絡(luò)爬蟲初級操作的簡單介紹,內(nèi)容主要有以下 2 部分: 解析網(wǎng)頁 數(shù)據(jù)庫 解析網(wǎng)頁 一般來說,解析網(wǎng)頁有三種方式:正則表達(dá)式、...

    崔曉明 評論0 收藏0
  • 爬蟲初級操作(二)

    摘要:本篇內(nèi)容為網(wǎng)絡(luò)爬蟲初級操作的簡單介紹,內(nèi)容主要有以下部分解析網(wǎng)頁數(shù)據(jù)庫解析網(wǎng)頁一般來說,解析網(wǎng)頁有三種方式正則表達(dá)式。關(guān)于,我們最后再來看一個實(shí)戰(zhàn)項(xiàng)目爬取北京二手房價格。代碼如下第頁這樣就成功爬取了安居客上前頁的北京二手房價格。 本篇內(nèi)容為 python 網(wǎng)絡(luò)爬蟲初級操作的簡單介紹,內(nèi)容主要有以下 2 部分: 解析網(wǎng)頁 數(shù)據(jù)庫 解析網(wǎng)頁 一般來說,解析網(wǎng)頁有三種方式:正則表達(dá)式、...

    callmewhy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<