主頁 > 知識庫 > python如何獲取網(wǎng)絡(luò)數(shù)據(jù)

python如何獲取網(wǎng)絡(luò)數(shù)據(jù)

熱門標(biāo)簽:淮安呼叫中心外呼系統(tǒng)如何 佛山通用400電話申請 打印谷歌地圖標(biāo)注 京華圖書館地圖標(biāo)注 電話外呼系統(tǒng)招商代理 電話機器人貸款詐騙 蘇州人工外呼系統(tǒng)軟件 廣東旅游地圖標(biāo)注 看懂地圖標(biāo)注方法

Retrieving Data over HTTP

Python 內(nèi)置了 sockets 可以實現(xiàn)與網(wǎng)絡(luò)連接并通過 Python 提取數(shù)據(jù)的功能。

socket 是可以提供雙向連接的,我們可以對同一個 socket 進(jìn)行讀寫操作。比方說,A 對 socket 寫入信息,并且將其發(fā)送給 socket 連接另一端 B;那么 B 讀取 socket 的內(nèi)容就可以得到 A 的信息。但是這樣會有一個問題,比如說, A端并沒有發(fā)送任何信息,而 B 端一直在嘗試讀取 socket 的內(nèi)容,那么 A 端和 B 端只能陷入漫長的等待。所以就引入了通信協(xié)議。協(xié)議通過規(guī)定誰先發(fā)送,誰后響應(yīng)等來規(guī)避上述的問題。

import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('fakeserver.com', 80)) # connect to server
cmd = 'GET http://fakeserver.com/fake.txt HTTP/1.0\r\n\r\n'.encode()
# send GET command followed by a blank line
mysock.send(cmd) 

while True: # receive data and print out
    data = mysock.recv(512)
    if (len(data)  1):
        break
    print(data.decode())
mysock.close()

Retrieving Data with urllib

利用 socket 我們可以與網(wǎng)站服務(wù)器,郵件服務(wù)器等建立連接。但是在建立連接之前,我們需要查詢文檔了解通信協(xié)議,然后根據(jù)協(xié)議編寫程序。所以相較于 socket 這種黑魔法,我們可以利用更為簡單的 Python Package。

利用 urllib.urlopen() 打開網(wǎng)頁后,我們就可以讀取數(shù)據(jù),像讀取本地文件一樣。

import urllib.request

fhand = urllib.request.urlopen('http://fakeserver.com/fake.txt')
for line in fhand:
    #convert UTF-8 to unicode string and print out
    print(line.decode().strip()) 

因為 urllib 使用簡潔方便,所以也常用與網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲除了要網(wǎng)頁讀取數(shù)據(jù)以外還需要在 HTML 格式中解釋出可用數(shù)據(jù),所以除了 urllib 還有另一常用利器就是 BeautifulSoup。

import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

html = urllib.request.urlopen('http://fakeserver.com/fake.html', context=ctx).read()
soup = BeautifulSoup(html, 'html.parser')
tags = soup('a')
# Retrieve all of the anchor tags
for tag in tags:
    print(tag.get('href', None))

Retrieving Data from XML

在網(wǎng)絡(luò)交換數(shù)據(jù),我們常用的格式有兩種,一是 XML; 二是 JSON。

XML 長得就像是 HTML 的近親,可以看做是樹的一種。利用 Python Package ElementTree 我們可以將 XML 文件轉(zhuǎn)換為樹,這樣可以方便我們后續(xù)提取有效的數(shù)據(jù)。

import xml.etree.ElementTree as ET
data =  '''
            person>
            name>Jack/name>
            phone>+123456789/phone>
            email office="yes"/>
            /person> 
        '''
tree = ET.fromstring(data) # convert xml into a tree
print('Name:', tree.find('name').text)
print('Attr:', tree.find('email').get('office'))

Retrieving Data from JSON

JSON 結(jié)構(gòu)相較于 XML 來說更為簡單,所以他的功能就沒有那么強大。但是 JSON 有一個優(yōu)勢就是可以直接映射到 Python 的 dictionaries 和 lists 中,非常實用。

我們可以直接利用 Python Package json 來解釋 JSON。

import json
data =  '''
            {
                "name" : "Jack",
                "phone" : {
                    "type" : "intl",
                    "number" : "+123456789"
                },
                "email" : {
                    "office" : "yes"
                }
            }
        '''
info = json.loads(data)  # convert json into a dictianary
print('Name:', info['name'])
print('Attr:', info['email']['office'])

作者:Yuki
出處:https://www.cnblogs.com/yukiwu/

以上就是python如何獲取網(wǎng)絡(luò)數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于python獲取網(wǎng)絡(luò)數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python udp網(wǎng)絡(luò)程序?qū)崿F(xiàn)發(fā)送、接收數(shù)據(jù)功能示例
  • Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請求、get請求區(qū)別實例分析
  • Python 網(wǎng)絡(luò)編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
  • 詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果
  • Python下載網(wǎng)絡(luò)文本數(shù)據(jù)到本地內(nèi)存的四種實現(xiàn)方法示例
  • Python爬蟲實例_城市公交網(wǎng)絡(luò)站點數(shù)據(jù)的爬取方法
  • python網(wǎng)絡(luò)編程調(diào)用recv函數(shù)完整接收數(shù)據(jù)的三種方法
  • python網(wǎng)絡(luò)編程之?dāng)?shù)據(jù)傳輸U(kuò)DP實例分析
  • python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(九):數(shù)據(jù)庫客戶端 DB-API

標(biāo)簽:湖州 駐馬店 衡水 中山 股票 呼和浩特 畢節(jié) 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python如何獲取網(wǎng)絡(luò)數(shù)據(jù)》,本文關(guān)鍵詞  python,如何,獲取,網(wǎng)絡(luò),數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python如何獲取網(wǎng)絡(luò)數(shù)據(jù)》相關(guān)的同類信息!
  • 本頁收集關(guān)于python如何獲取網(wǎng)絡(luò)數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章