999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python和Requests快速獲取網頁數據的方法研究

2023-09-25 11:07:26姜慶玲張樊
現代信息科技 2023年16期

姜慶玲 張樊

摘 ?要:隨著“互聯網+”和大數據時代的到來,網絡上充斥著各種各樣的數據,過濾并獲取有用的數據在當今環境下至關重要。文章提出一種基于Python和Requests模塊的快速獲取網頁數據的方法,使用該方法可以獲取解析前的網頁源代碼文本和圖片數據,并保存為本地文件,為之后的數據分析和深入學習大數據技術奠定基礎。實驗結果表明,該方法步驟和代碼編寫簡單易學,運行結果較好,具有一定的實用性。

關鍵詞:Python技術;Requests模塊;網絡圖片爬取

中圖分類號:TP312.1;TP393 ? 文獻標識碼:A ? 文章編號:2096-4706(2023)16-0100-05

Research on Method of Quickly Obtaining Web Data Based on Python and Requests

JIANG Qingling, ZHANG Fan

(Wuchang Institute of Technology, Wuhan ?430065, China)

Abstract: With the arrival of the “Internet+” and big data era, the network is full of all kinds of data. Filtering and obtaining useful data is crucial in today's environment. This paper proposes a method to quickly acquire web data based on Python and Requests modules. Using this method, you can obtain the text and image data of the web source code before parsing, and save them as local files, laying the foundation for later data analysis and in-depth study of big data technology. The experimental results show that the steps and coding of this method are easy to learn, the running results are good, and it has certain practicability.

Keywords: Python technology; Requests module; network image crawling

0 ?引 ?言

近年來,隨著國家“互聯網+”行動的提出,各行各業都開始關注互聯網技術的發展,這也促進了大數據時代的到來。在大數據時代下,文字和圖片信息也逐步數字化,出現在大小屏幕上,人們獲取信息的方式更加快捷和多樣。大量的數據逐步堆積在網絡上,人們接收的信息也逐漸龐大,而其中有些信息,人們并不需要。這時,一種能過濾信息的技術就會應運而生,Python語言就可以很好地幫助人們過濾并獲取有用的信息。本文將介紹基于Python語言下獲取網頁數據的方法,該方法簡單易實現,能夠獲取網頁文本和圖片數據。

縱觀近5年國內在Python技術中獲取網頁信息的文獻,有大量的網頁爬蟲框架的研究,例如基于Scrapy爬蟲框架的研究有新浪微博數據爬蟲研究[1]、房產信息爬取系統設計[2]、分布式獲取當當網圖書數據[3]、食品安全輿論數據爬取與分析[4]、研招網碩士目錄爬蟲的設計與實現[5]等。除了Scrapy爬蟲技術的研究,還有學者對主流的爬蟲技術的研究,例如楊健[6]等學者就對基于Python技術的三種網絡爬蟲框架(Requests、Scrapy、Selenium)進行了研究,分析了這三種爬蟲技術的各自優勢和適用場合。根據已有的研究成果,經過各種技術的比較驗證后,在確保獲取信息效果正確的前提下,Requests庫代碼量和步驟都較少,簡單易學,適合讀者驗證并投入使用。綜上所述,本文將使用Requests庫實現獲取網頁的文本和圖片數據。

1 ?相關技術

1.1 ?Python語言

Python由吉多·范羅蘇姆(Guido van Rossum)于20世紀90年代初設計,作為一門叫作ABC語言的替代品,吉多·范羅蘇姆曾在于20世紀80年代曾在ABC系統開發中工作了數年,ABC語言定位為一種交互式的結構化高級語言,旨在替代BASIC、Pascal等語言,用于教學及原型軟件設計,它專注于編程初學者,但是存在平臺遷移能力弱且難以添加新功能等問題,以至于ABC語言并未成功。Python繼承了ABC語言的優點,能夠讓編程初學者易學上手,并解決了前者的致命性問題,確保了拓展模塊的編寫和跨平臺運行。

Python基于上述優點,應用起來非常方便,迅速流行起來,也逐步推動了其自身的發展。現在的Python語言擁有豐富的庫、面向對象、免費開源、可擴展性、可嵌入性、可進行高級動態編碼、適合做科學計算等諸多優點,也促使了大數據和人工智能的發展,就連國內高等教育中,Python語言程序設計已經成為基礎學科。

在語法方面,區別于其他高級語言,Python語言必須使用4個空格來表示每級縮進,縮進是語法的一部分。除此之外,Python語法和其他高級語言類似,例如數據類型、表達式、語句、函數、對象等語法,僅部分寫法有些差別。

Python擁有豐富的庫,可拓展性極強,應用領域非常廣泛,主要應用于軟件開發、科學計算和統計、人工智能、圖像處理、數字和文本處理、數據庫編程、網絡編程、多媒體應用、游戲引擎、黑客編程等多個領域。

1.2 ?Requests模塊

Requests模塊是Python豐富的庫文件中的一種,是一個基于Apache2協議開源的Python HTTP庫。它是爬蟲技術的基礎,號稱是“為人類準備的HTTP庫”。在Python語言中,系統自帶的urllib和urllib2都提供了功能強大的HTTP支持,但是API接口確實太難用了,這才有了Requests庫的產生。在Requests模塊中,請求一個網頁地址,只需要一句代碼。

使用Requests模塊的步驟如下:

1)解析網址URL的格式和參數;

2)設置網絡請求參數;

3)選擇合適的請求方式發送網絡請求;

4)根據網絡請求狀態碼判斷是否獲取成功,如果成功,接收并保存數據;

5)根據需要解碼數據。

2 ?步驟詳解

2.1 ?解析網址URL

在上述步驟第一步中,網址URL通用格式為:

:////#

<方案>://<主機>:<端口>/<路徑>/<參數>?<查詢>#<錨點>

其中:

表示訪問服務器獲取資源所使用的協議,例如http、https、ftp等。

表示資源宿主服務器的主機名、ip地址或域名。

表示資源宿主服務器正在監聽的端口號,例如http默認為80、https默認是443等。

表示服務器上資源的路徑,由斜杠(/)與前面URL組件分隔開。

表示服務器上資源規定的參數。

表示資源的查找條件,用問號(?)與URL其余組件分隔開。

表示網頁錨點,用于標記一個網頁中部分內容。

根據上述合法的網址格式,可舉例如下:

http://www.baidu.com/s?wd=狗

http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=楊紫

2.2 ?設置網絡請求參數

在確定好要爬取的網頁URL后,點擊頁面右鍵的“檢查”選擇項后,出現如圖1所示的界面,在該界面中,依次選擇“網絡”選項卡、“文檔”選項卡,點擊對應網址后,查看標頭里面的User Agent,這就是需要設置的網絡請求參數。

User Agent簡稱UA,表示用戶代理,是軟件提供的一個標識自己身份的標識符,包含了用戶正在使用的設備以及軟件的一些信息,例如瀏覽器、版本、瀏覽器渲染引擎等。不同的瀏覽器其User Agent不同,因此需要在發送請求之前設置好該參數。

2.3 ?發送網絡請求

網絡請求主要用于資源訪問、接口數據的請求、傳下載文件等操作。常見的請求方式主要包括GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS等,其中GET和POST請求使用最頻繁。

2.3.1 ?GET請求方式

GET請求主要用于獲取資源,對服務器上資源不會產生影響,它可以把請求的一些參數信息拼接在URL上,傳遞給服務器,由服務器端進行參數信息解析,然后返回相應的資源給請求者。需要注意的是,GET請求拼接的URL數據大小和長度是有最大限制的,傳輸的數據量一般限制在2 KB。

2.3.2 ?POST請求方式

POST請求執行提交信息、傳輸信息的操作,對服務器上資源會產生影響,一般用于例如注冊、登錄、上傳文件(百度云盤)等操作。POST請求傳遞的一些數據和參數不是直接拼接在URL后的,而是放在Http請求Body里。相對GET請求來說,POST請求比較安全,并且傳遞的數據大小和格式是無限制的。

本文中獲取網頁數據并不需要修改服務器上資源,不需要嚴格的安全性要求,且需要傳遞的數據量并不大,綜合考慮后,采用GET方式發送網絡請求。

2.4 ?判斷網絡請求狀態碼

在Requests模塊中,常見的網絡請求狀態碼如表1所示。

如果狀態碼是200,則應該將請求返回的結果保存起來,使用Python中的with語句實現:

with open('保存路徑','讀取模式') as f:

f.write(需要保存的內容)

其中讀取模式有b(二進制)、r(只讀),w(只寫),a(追加),如果最后有+號,表示文檔可讀可寫。其中,需要注意的是,寫入一般會覆蓋原文件,追加則在原文件尾部開始寫,如果文件不存在,w,w+,a,a+,wb會創建新文件。

2.5 ?解碼數據

網頁中有些數據在返回的過程中存在加密的代碼,那么這樣就無法得到想要的數據,這事就需要解碼,例如將返回的內容存為txt文本格式,一般需要解碼為“UTF-8”的格式,這時需要使用decode("utf8")實現。

3 ?獲取網頁數據的具體實現

3.1 ?編程環境

本文在Window 10操作系統下安裝Python 3.7.4版本,集成開發環境IDE使用PyCharm Community版本,瀏覽器使用Chrome。

在PyCharm中創建項目,并安裝Requests庫,安裝成功后如圖2所示。

3.2 ?獲取網頁源代碼文本

以獲取百度頁面的代碼為例,其網址為“https://www.baidu.com”。如果想獲取其源代碼,可以發現右鍵查看源代碼,并不是真正的源代碼,是服務器經過解析后返回的代碼,如圖3所示。

那么想得到真正的源代碼就必須在服務器解析之前就獲取,使用Requests庫發送請求就可以實現,按照上述步驟,獲取網址后,設置對應的User Agent為“Mozilla/5.0 (Windows NT 10.0; Win 64; x 64)

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/

111.0.0.0 Safari/537.36”,編寫Python代碼如下:

import requests ? #導入requests庫

#1.網址URL

url="https://www.baidu.com"

#2.設置請求參數

headers={

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

}

#3.發送GET請求獲取頁面

res=requests.get(url,headers=headers)

#4.保存返回內容

content=res.content.decode("utf8") ?# 應使用二進制bytes流,并解碼為utf-8

#5.獲取的內容進行存儲

with open('baidu.txt','w') as f:

f.write(content)

運行程序后,會在當前程序的同級目錄下生成一個“baidu.txt”的文本文件,內容如圖4所示。

將上述文件另存為UTF-8格式后,修改后綴名為“html”,再打開就是一個靜態的百度頁面。

3.3 ?獲取網頁圖片

以獲取百度圖片中“萌寵”圖片為例,選擇器任意一張圖片并右鍵復制鏈接地址,根據選擇的圖片地址,編寫代碼如下:

import requests

url="https://img2.baidu.com/it/u=4117544783,3162221579&fm=253&fmt=auto&app=138&f=JPEG?w=281&h=499"

headers={

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

}

res=requests.get(url,headers=headers)

print(res)

content=res.content ? #圖片是二進制文件,因此不用解碼

#保存圖片文件

with open("animal.png",'wb') as f:

f.write(content)

運行結果如圖5所示。

4 ?結 ?論

本文通過Python語言結合Requests模塊實現了簡單的網頁中源代碼文本和圖片數據的獲取,經試驗驗證,本文使用的實現思路、步驟和代碼編寫均簡單易學,實現效果較好。在“互聯網+”和大數據時代背景下,能夠為學習爬蟲框架、獲取大量網絡數據并進行數據分析、深入研究大數據和人工智能技術奠定數據基礎。

參考文獻:

[1] 鄧曉璐,姚松.基于Scrapy的新浪微博數據爬蟲研究 [J].現代信息科技,2023,7(3):44-47.

[2] 曾水新,黃日勝.基于Scrapy的房產信息爬取系統設計 [J].電腦編程技巧與維護,2022(12):26-28.

[3] 胡學軍,李嘉誠.基于Scrapy-Redis的分布式爬取當當網圖書數據 [J].軟件工程,2022,25(10):8-11.

[4] 魏海昱,林偉鴻,賀超波.基于Scrapy的食品安全輿情數據爬取與分析 [J].現代計算機,2022,28(14):49-54+95.

[5] 伍高巍,劉杰,葛曉龍,等.基于Scrapy的研招網碩士目錄爬蟲的設計與實現 [J].電腦知識與技術,2022,17(18):53-55.

[6] 楊健,陳偉.基于Python的三種網絡爬蟲技術研究 [J].軟件工程,2023,26(2):24-27+19.

作者簡介:姜慶玲(1991.05—),女,漢族,湖北孝感人,教師,碩士,研究方向:計算機基礎應用,數據分析與數據挖掘。

主站蜘蛛池模板: 在线亚洲精品自拍| 亚洲丝袜中文字幕| 在线亚洲小视频| 青青青草国产| 日韩国产欧美精品在线| 在线国产综合一区二区三区| 国产成人免费手机在线观看视频 | 亚瑟天堂久久一区二区影院| 欧美亚洲一区二区三区在线| 久久久噜噜噜| 性喷潮久久久久久久久| 国产精品嫩草影院av| 精品五夜婷香蕉国产线看观看| 亚洲人成网站日本片| 一级毛片在线播放免费| 呦视频在线一区二区三区| 日韩欧美中文字幕一本| 亚洲中文精品久久久久久不卡| 无码高潮喷水在线观看| 秋霞国产在线| 国产午夜福利亚洲第一| 91精品综合| 人妻丰满熟妇av五码区| 久久精品娱乐亚洲领先| 国产丝袜一区二区三区视频免下载| 亚洲人成影院在线观看| 91口爆吞精国产对白第三集 | 伊大人香蕉久久网欧美| 亚洲v日韩v欧美在线观看| 久久永久视频| 最新国产网站| 国产亚洲视频免费播放| 91小视频在线| 亚洲永久色| 伊人精品视频免费在线| a亚洲视频| 午夜视频免费一区二区在线看| 亚洲日韩国产精品综合在线观看| 国产美女免费| 久草美女视频| 免费jjzz在在线播放国产| 久久国产精品娇妻素人| 欧美视频免费一区二区三区| 麻豆精品在线| 成人国产精品网站在线看| 日本成人一区| 日韩精品一区二区三区中文无码| 亚洲一区无码在线| 99精品免费在线| 国产亚洲欧美另类一区二区| 国内黄色精品| 日本不卡在线播放| 亚洲综合中文字幕国产精品欧美| 无码有码中文字幕| 免费黄色国产视频| 国产美女自慰在线观看| 国产尤物视频在线| 亚洲三级片在线看| 日韩高清欧美| 91在线国内在线播放老师| 亚洲二区视频| 国产男女免费完整版视频| 国产福利小视频高清在线观看| 欧洲熟妇精品视频| 亚洲视频免费在线看| 亚洲天堂区| 日韩不卡免费视频| 国产精品视频猛进猛出| 日韩精品一区二区三区大桥未久| 色婷婷成人| 九九热精品视频在线| 亚洲精品人成网线在线| 国产一级在线播放| 国产视频一区二区在线观看| 噜噜噜综合亚洲| 国产香蕉在线视频| 午夜国产不卡在线观看视频| 国产精品99在线观看| 精品久久蜜桃| 国产真实二区一区在线亚洲 | 99久久精品免费看国产电影| 欧美中文字幕无线码视频|