Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk meminta sumber rangkaian menggunakan Python

Bagaimana untuk meminta sumber rangkaian menggunakan Python

WBOY
WBOYke hadapan
2023-04-13 12:22:051931semak imbas

Bagaimana untuk meminta sumber rangkaian menggunakan Python

Kami telah lama berkongsi pengetahuan berkaitan sistem Linux, jadi sesetengah rakan mungkin tersalah anggap bahawa kami hanya berkongsi perkara yang berkaitan dengan operasi Linux Sebenarnya, ini tidak berlaku . Kami berkembang dalam kehidupan seharian Beberapa masalah yang dihadapi semasa proses, yang saya rasa boleh diringkaskan, boleh dikongsi.

Baru-baru ini saya sedang menulis program untuk kerap mengakses sumber rangkaian, yang melibatkan penggunaan python untuk mengakses rangkaian, jadi kami akan membuat ringkasan ringkas mengenai perkara ini hari ini.

Gunakan python untuk mengakses sumber rangkaian

Untuk mengakses sumber pada rangkaian, sesetengah rakan boleh menggunakan urllib.request, yang juga merupakan perpustakaan standard python. Walau bagaimanapun, kami menggunakan permintaan, yang merupakan pembungkus urllib.request dan lebih mudah digunakan. Jika ini adalah kali pertama anda menggunakannya, anda perlu memasang permintaan Kami menggunakan pip untuk memasang:

pip install --user requests

Selepas pemasangan berjaya, anda boleh menggunakannya secara langsung, anda perlu memperkenalkannya di atas fail python:

import requestsimport requests

Untuk kemudahan demonstrasi, kami menggunakan modul permintaan untuk mengakses projek python dengan bintang tertinggi di github Alamatnya ialah:

​https://www.php.cn/link /62d90d223cf3e2239113a4963b191d71​

Untuk mendapatkan pemahaman yang menyeluruh, anda boleh menggunakan penyemak imbas untuk membuka alamat ini dan lihat kandungan di dalamnya. Ia adalah teks yang dipaparkan dalam format json.

Kemudian kami mencipta fail baharu ​​test-resp.py​​ dan masukkan kod berikut:

import requests
url='​​https://www.php.cn/link/62d90d223cf3e2239113a4963b191d71​​';
get_resp=requests.get(url);

Baris pertama dalam kod di atas memperkenalkan requests. modul, baris 2 menyimpan alamat untuk diakses dalam pembolehubah url, baris 3 menggunakan kaedah get modul permintaan untuk mengakses url, dan menyimpan respons dalam pembolehubah get_resp. Respons ialah objek yang mengandungi kandungan dan status sumber yang diminta. Anda boleh mencetak status respons ini menggunakan objek status_code, seperti yang ditunjukkan dalam kod berikut:

print(get_resp.status_code)

Hasilnya adalah seperti berikut:

$ python ​​test-resp.py​​
200

Sudah tentu, anda juga boleh cetak teks respons, iaitu cetak teks get_resp, tetapi teks ini tidak diformat dan tidak mudah dibaca, seperti yang ditunjukkan dalam rajah di bawah:

Kami hanya memintas sebahagian daripada hasilnya dalam. angka di atas kerana terlalu panjang... Keputusan ini lebih menyusahkan untuk dihuraikan, tetapi Jangan risau sama sekali Lihat sahaja kandungannya dan kita dapat perhatikan kandungannya dalam format json, jadi hasil tindak balasnya juga a json, dan fungsi penghuraian json python sangat berkuasa Kita boleh mencetak json ini seperti berikut Nilai utama:

print(get_resp.json().keys())

Hasilnya adalah seperti berikut:

$ python ​​test-resp.py​​
dict_keys(['total_count', 'incomplete_results', 'items'])

Seperti yang boleh. dilihat daripada keputusan di atas, kita boleh merawat sepenuhnya hasil respons ini sebagai objek json. Sebagai contoh, total_count nilai keyi pertama dalam keputusan di atas mewakili jumlah bilangan gudang ular sawa Kita boleh mencetak nilai ini seperti berikut:

response_dict=get_resp.json();
print("Total repositories:", response_dict['total_count'])

Keputusan yang dijalankan adalah seperti berikut:

$ python ​​test-resp.py​​
Total repositories: 9128125

Jika sumber rangkaian yang dibaca adalah dalam format html biasa, anda boleh menggunakan pustaka pihak ketiga BeautifulSoup, yang boleh menyelesaikan penghuraian html dengan sempurna. Kami juga telah memperkenalkan BeautifulSoup dalam artikel sebelumnya Anda boleh merujuk kepada: Menggunakan perpustakaan Beautiful Soup Python untuk menganalisis halaman web

Tambah maklumat pengepala permintaan

Sesetengah sumber rangkaian mungkin bertindak balas terhadap permintaan Terdapat sekatan, seperti menghalang robot (program) daripada mengakses, atau memerlukan log masuk (dengan sesi pengguna) untuk mengakses Untuk tujuan ini, anda boleh menambah pengepala permintaan pada permintaan, mensimulasikan pelayar dalam pengepala permintaan, menambah maklumat sesi pengguna (token. ), dll. Seperti yang ditunjukkan di bawah:

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Authorization':'41d15146-c3f3-4c0b-b48b-b5210151a9df'
}
get_resp=requests.get(url,headers=headers,params=None)

Dalam kod di atas, Agen Pengguna dalam objek pengepala ialah maklumat penyemak imbas yang disimulasikan dan Kebenaran ialah token permintaan. Anda juga boleh menambah maklumat pengepala permintaan lain seperti yang diperlukan, seperti yang ditunjukkan di bawah:

header={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'
}

Lain-lain

Contoh yang kami gunakan di atas adalah semua memproses permintaan mendapatkan dan perkara yang sama berlaku untuk permintaan siaran. Gunakan kaedah pos permintaan seperti berikut:

post_resp=requests.post(url,headers=headers,data=None,json=None)

Kaedah penggunaan adalah sama seperti permintaan dapatkan.

Di atas adalah semua kandungan yang kami kongsikan kali ini, selamat berbincang.

Atas ialah kandungan terperinci Bagaimana untuk meminta sumber rangkaian menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam