Rumah > Artikel > pembangunan bahagian belakang > 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.
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
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' }
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!