Python爬取數(shù)據(jù)并搭建專屬API(1)

APP開發(fā)社 第六次活動筆記與任務(wù)清單

活動主題:PYTHON爬蟲搭建與SQL數(shù)據(jù)庫使用

目標(biāo):學(xué)習(xí)python爬蟲并了解API(application program interface)的搭建胶征,為我們之后的Android網(wǎng)絡(luò)應(yīng)用準(zhǔn)備基礎(chǔ)

具體流程如下:

1续挟、獲取專屬api數(shù)據(jù)(此處需要用到爬蟲) ----------------30min(今天的部分)

2侥祭、搭建api所需的數(shù)據(jù)庫(此處用到sql)-------------------30min


CHAPTER 12 Networked programs 網(wǎng)絡(luò)程序

核心介紹:In this chapter, we will pretend to be a web browser and retrieve(獲群伞)web pages using the HyperText Transfer Protocol(HTTP). Then we will read through the web page data and parse it.

我們將會先搭建一個(gè)游覽器,通過python中內(nèi)置的庫來獲取網(wǎng)頁內(nèi)容(通過HTTP(HyperText 富文本)協(xié)議,然后像訪問文件的方式來訪問網(wǎng)頁中的內(nèi)容找筝。我們同樣也會學(xué)習(xí)到如何爬取網(wǎng)頁上的數(shù)據(jù)(比如百度百科上的詞條介紹)禽篱。


12.1 HTTP Protocal

The network protocol that powers the web is actually quite simple and there is built-in support in Python called sockets.

在python語言中,我們使用內(nèi)建的socket工具去實(shí)現(xiàn)HTTP協(xié)議

A socket is much like a file, except that a single socket provides a two-way connection between two programs.

socket工具更像一個(gè)文件丈咐,而并不是一個(gè)程序瑞眼。

A protocal is a set of precise rules that determine who is to go first.

一個(gè)協(xié)議就是誰先做什么事情。

例子: 如果我們不遵守協(xié)議(protocal) 就會出現(xiàn)網(wǎng)站服務(wù)器提供了一個(gè)數(shù)據(jù)扯罐,但是客戶端(我們的電腦)卻沒有接收這種尷尬的情況


12.2 The world's Simplest Web Broswer(務(wù)必理解原理)

世界上最簡單的游覽器(遵循HTTP協(xié)議的方式)

// Making for our app developer club

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

//First the program used HTTP protocal

這一行代碼意味創(chuàng)建了SOCKEt文件

mysock.connect(('data.pr4e.org', 80))

//The program makes a connection to port 80 on the serve www.py4e.com

將這個(gè)文件與www.py4e.com 80端口進(jìn)行連接

cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()


mysock.send(cmd)

while True:

? ? data = mysock.recv(512)

? ? if len(data) < 1:

? ? ? ? break

? ? print(data.decode(),end='')

mysock.close()

我們通過手動創(chuàng)建socket文件负拟,并發(fā)送到服務(wù)器,然后接收文件歹河,注意到我們最多能一次接受512字節(jié)的文件掩浙,所以我們需要通過循環(huán)來接受,并打印到屏幕上秸歧。


12.4 Retrieving web pages with urllib(請將這段程序自己寫一段厨姚,因?yàn)楸容^實(shí)用)

使用urlib訪問網(wǎng)頁

While we can manually send and receive data over HTTP using the socket library tere is a much simpler way to perform this common task in Python by using the urllib.

注釋:urlib是一個(gè)python內(nèi)置庫,我們可以使用它免除自己手寫HTTP協(xié)議的原理(但是明白原理還是很關(guān)鍵的)

The code will be much shorter

代碼長度會非常友好

具體代碼如下

import urllib.request

fhand = urllib.request.urlopen("http://data.pr4e.org/romeo.txt")

for line in fhand:

? ? print(line.decode())

其實(shí)decode()只是刪除了一些空格键菱,大家刪除decode()后可以試一下

具體解釋谬墙,我們通過這個(gè)urlopen的函數(shù)可以直接獲取到文件的一個(gè)“快捷方式”,然后像操作文件一樣即可经备。

12.7 Parsing HTML using BeautifulSoup

首先我們先要調(diào)用這個(gè)庫(由于是第三方庫拭抬,需要自己下載)

鏈接為: www.crummy.com/software/


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侵蒙,隨后出現(xiàn)的幾起案子造虎,更是在濱河造成了極大的恐慌,老刑警劉巖纷闺,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件算凿,死亡現(xiàn)場離奇詭異份蝴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氓轰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門婚夫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人署鸡,你說我怎么就攤上這事案糙。” “怎么了储玫?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵侍筛,是天一觀的道長。 經(jīng)常有香客問我撒穷,道長匣椰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任端礼,我火速辦了婚禮禽笑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛤奥。我一直安慰自己佳镜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布凡桥。 她就那樣靜靜地躺著蟀伸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缅刽。 梳的紋絲不亂的頭發(fā)上啊掏,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機(jī)與錄音衰猛,去河邊找鬼迟蜜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啡省,可吹牛的內(nèi)容都是我干的娜睛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼卦睹,長吁一口氣:“原來是場噩夢啊……” “哼畦戒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起结序,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兢交,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后笼痹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體配喳,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年凳干,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晴裹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡救赐,死狀恐怖涧团,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情经磅,我是刑警寧澤泌绣,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站预厌,受9級特大地震影響阿迈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轧叽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一苗沧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炭晒,春花似錦待逞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至震束,卻和暖如春怜庸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驴一。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工休雌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肝断。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓杈曲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胸懈。 傳聞我的和親對象是個(gè)殘疾皇子担扑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,457評論 0 13
  • 網(wǎng)絡(luò)編程 一.楔子 你現(xiàn)在已經(jīng)學(xué)會了寫python代碼涌献,假如你寫了兩個(gè)python文件a.py和b.py,分別去運(yùn)...
    go以恒閱讀 2,022評論 0 6
  • 英文文檔首有,一開始我也是抗拒的燕垃,邊翻譯邊看枢劝,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過了,我的英文基礎(chǔ)其實(shí)很差卜壕。附上鏈接:鏈接:...
    lonecolonel閱讀 9,911評論 3 1
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007閱讀 2,210評論 0 3
  • 開課的第二天也就是昨天恰好也是感恩節(jié)您旁,我覺得是一個(gè)特別好的開始,也特別提醒了我轴捎,要感恩家人鹤盒、朋友、老師乃至幫...
    samenl閱讀 174評論 0 0