中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python獲取網絡數據的方法

發布時間:2021-04-09 17:51:42 來源:億速云 閱讀:178 作者:啵贊 欄目:開發技術

本篇內容主要講解“python獲取網絡數據的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python獲取網絡數據的方法”吧!

Retrieving Data over HTTP

Python 內置了 sockets 可以實現與網絡連接并通過 Python 提取數據的功能。

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

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 我們可以與網站服務器,郵件服務器等建立連接。但是在建立連接之前,我們需要查詢文檔了解通信協議,然后根據協議編寫程序。所以相較于 socket 這種黑魔法,我們可以利用更為簡單的 Python Package。

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

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 使用簡潔方便,所以也常用與網絡爬蟲。網絡爬蟲除了要網頁讀取數據以外還需要在 HTML 格式中解釋出可用數據,所以除了 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

在網絡交換數據,我們常用的格式有兩種,一是 XML; 二是 JSON。

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

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 結構相較于 XML 來說更為簡單,所以他的功能就沒有那么強大。但是 JSON 有一個優勢就是可以直接映射到 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'])

到此,相信大家對“python獲取網絡數據的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绿春县| 富宁县| 镇巴县| 沛县| 湛江市| 定安县| 林西县| 伊金霍洛旗| 汝阳县| 芜湖市| 唐海县| 邢台县| 东兰县| 庆云县| 庄浪县| 营口市| 通江县| 石景山区| 海林市| 长沙市| 体育| 盖州市| 辉县市| 连州市| 靖边县| 水富县| 德江县| 贵定县| 蕲春县| 西峡县| 开封县| 庆元县| 佛学| 博乐市| 乐昌市| 浠水县| 白城市| 松原市| 涞水县| 云阳县| 衡阳县|