


Satu artikel akan membimbing anda melalui perpustakaan urllib dalam Python (URL pengendalian)
1. Memanipulasi URL
urllib menyediakan satu siri fungsi untuk memanipulasi URL. Kelaskan kandungan yang berkaitan.
2. Dapatkan()
urllib'srequest
Modul request
模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应:
例如,对豆瓣的URLhttps://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078
boleh menangkap kandungan URL dengan mudah, iaitu menghantar permintaan GET ke halaman yang ditentukan, dan kemudian mengembalikan respons HTTP: Sebagai contoh, URL Douban
https://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078
🎜🎜rangkak dan kembalikan jawapan: 🎜🎜from urllib import request with request.urlopen('https://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078') as f: data = f.read() print('Status:', f.status, f.reason) for k, v in f.getheaders(): print('%s: %s' % (k, v)) print('Data:', data.decode('utf-8'))
Anda boleh melihat pengepala dan data JSON bagi respons HTTP:
Jika anda ingin menggunakan GET jika anda ingin mensimulasikan permintaan pelayarRequest
对象,通过往Request
对象添加HTTP头,就可以把请求伪装成浏览器。例如,模拟iPhone 6去请求豆瓣首页:
from urllib import request req = request.Request('http://www.douban.com/') req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25') with request.urlopen(req) as f: print('Status:', f.status, f.reason) for k, v in f.getheaders(): print('%s: %s' % (k, v)) print('Data:', f.read().decode('utf-8'))
这样豆瓣会返回适合iPhone的移动版网页:
三、Post()
如果要以POST发送一个请求,只需要把参数data
code style="box -sizing: border-box;font-family: var(--monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234 , 237);background -color: rgb(243, 244, 244);border-radius: 3px;padding-right: 2px;padding-left: 2px;font-size: 0.9em;">Minta objek, dengan pergi ke Permintaan</ Dengan menambahkan pengepala HTTP pada kod></p>🎜 objek, anda boleh menyamar permintaan itu sebagai penyemak imbas. Sebagai contoh, simulasi iPhone 6 untuk meminta halaman utama Douban: 🎜🎜🎜🎜<pre class='brush:php;toolbar:false;'>from urllib import request, parse
print(&#39;Login to weibo.cn...&#39;)
#电子邮件
email = input(&#39;Email: &#39;)
#密码
passwd = input(&#39;Password: &#39;)
#相关的参数
login_data = parse.urlencode([
(&#39;username&#39;, email),
(&#39;password&#39;, passwd),
(&#39;entry&#39;, &#39;mweibo&#39;),
(&#39;client_id&#39;, &#39;&#39;),
(&#39;savestate&#39;, &#39;1&#39;),
(&#39;ec&#39;, &#39;&#39;),
(&#39;pagerefer&#39;, &#39;https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F&#39;)
])
#网址请求
req = request.Request(&#39;https://passport.weibo.cn/sso/login&#39;)
req.add_header(&#39;Origin&#39;, &#39;https://passport.weibo.cn&#39;)
#构造User-Agent
req.add_header(&#39;User-Agent&#39;, &#39;Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25&#39;)
req.add_header(&#39;Referer&#39;, &#39;https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F&#39;)
with request.urlopen(req, data=login_data.encode(&#39;utf-8&#39;)) as f:
print(&#39;Status:&#39;, f.status, f.reason)
for k, v in f.getheaders():
print(&#39;%s: %s&#39; % (k, v))
print(&#39;Data:&#39;, f.read().decode(&#39;utf-8&#39;))</pre>🎜<p cid="n13" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;anak yatim: 4 ;margin -atas: 0.8em;margin-bottom: 0.8em;white-space: pra-bungkus;font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, "Segoe UI Emoji ", sans-serif;font-size: 16px;text-align: start;">🎜Dengan cara ini, Douban akan mengembalikan versi mudah alih halaman web yang sesuai untuk iPhone: 🎜🎜🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/001/272/559/95e6e8965dd5ac2b6231e469adf6c889-4.png" class="lazy"/ alt="Satu artikel akan membimbing anda melalui perpustakaan urllib dalam Python (URL pengendalian)" >🎜🎜🎜🎜<h2 id="Tiga-Post">🎜Tiga, Post()🎜</h2>🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/001/272/559/95e6e8965dd5ac2b6231e469adf6c889-4.png" class="lazy"/ alt="Satu artikel akan membimbing anda melalui perpustakaan urllib dalam Python (URL pengendalian)" >🎜<p cid="n16" mdtype="paragraph" style="max-width:90%"Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, "Segoe UI Emoji", sans-serif;font-size: 16px ;text-align: start;">🎜Jika anda ingin menghantar permintaan dengan POST, anda hanya perlu meletakkan parameter 🎜🎜<code style="box-sizing: border-box ;font-family: var(--monospace);vertical- align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234, 237);background-color: rgb(243 , 244, 244);border-radius: 3px;padding- kanan: 2px;padding-left: 2px;font-size: 0.9em;">data
🎜🎜 dihantar dalam bait. 🎜🎜🎜
模拟一个微博登录,先读取登录的邮箱和口令,然后按照weibo.cn的登录页的格式以username=xxx&password=xxx
的编码传入:
from urllib import request, parse print('Login to weibo.cn...') #电子邮件 email = input('Email: ') #密码 passwd = input('Password: ') #相关的参数 login_data = parse.urlencode([ ('username', email), ('password', passwd), ('entry', 'mweibo'), ('client_id', ''), ('savestate', '1'), ('ec', ''), ('pagerefer', 'https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F') ]) #网址请求 req = request.Request('https://passport.weibo.cn/sso/login') req.add_header('Origin', 'https://passport.weibo.cn') #构造User-Agent req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25') req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F') with request.urlopen(req, data=login_data.encode('utf-8')) as f: print('Status:', f.status, f.reason) for k, v in f.getheaders(): print('%s: %s' % (k, v)) print('Data:', f.read().decode('utf-8'))
如果登录成功,获得的响应如下:
如果登录失败,获得的响应如下:
四、Handler
如果还需要更复杂的控制,比如通过一个Proxy去访问网站,需要利用ProxyHandler
来处理,示例代码如下:
import urllib.request # 构建了两个代理Handler,一个有代理IP,一个没有代理IP httpproxy_handler = urllib.request.ProxyHandler({"https": "27.191.234.69:9999"}) nullproxy_handler = urllib.request.ProxyHandler({}) # 定义一个代理开关 proxySwitch = True # 通过 urllib.request.build_opener()方法使用这些代理Handler对象,创建自定义opener对象 # 根据代理开关是否打开,使用不同的代理模式 if proxySwitch: opener = urllib.request.build_opener(httpproxy_handler) else: opener = urllib.request.build_opener(nullproxy_handler) request = urllib.request.Request("http://www.baidu.com/") # 1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。 response = opener.open(request) # 2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。 # urllib.request.install_opener(opener) # response = urllib.request.urlopen(request) # 获取服务器响应内容 html = response.read().decode("utf-8") # 打印结果 print(html)
如果代理成功返回网址的信息。
Jika URL salah atau alamat proksi salah, kembali ke antara muka di bawah.
5. Ringkasan
Menggunakan bahasa Python boleh membantu semua orang belajar dengan lebih baik. Fungsi yang disediakan oleh urllib adalah untuk menggunakan program untuk melaksanakan pelbagai permintaan HTTP. Jika anda ingin mensimulasikan penyemak imbas untuk melengkapkan fungsi tertentu, anda perlu menyamar permintaan itu sebagai penyemak imbas. Kaedah penyamaran adalah dengan terlebih dahulu memantau permintaan yang dihantar oleh penyemak imbas, dan kemudian menyamarkannya berdasarkan pengepala permintaan pelayar Pengepala Ejen Pengguna digunakan untuk mengenal pasti penyemak imbas.
Atas ialah kandungan terperinci Satu artikel akan membimbing anda melalui perpustakaan urllib dalam Python (URL pengendalian). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kaedah mengisi data Excel ke dalam bentuk web menggunakan Python adalah: pertama menggunakan panda untuk membaca data Excel, dan kemudian gunakan selenium untuk mengawal penyemak imbas untuk mengisi secara automatik dan menyerahkan borang; Langkah -langkah khusus termasuk memasang pandas, openpyxl dan perpustakaan selenium, memuat turun pemacu penyemak imbas yang sepadan, menggunakan pandas untuk membaca nama, e -mel, telefon dan medan lain dalam fail data.xlsx, melancarkan pelayar melalui selenium untuk membuka. Bentuk dan proses semua baris data dalam gelung.

Jadual Kandungan Apakah analisis sentimen dalam perdagangan cryptocurrency? Mengapa analisis sentimen penting dalam sumber pelaburan cryptocurrency sumber data emosi a. Platform Media Sosial b. Media berita c. Alat untuk analisis sentimen dan teknologi alat yang biasa digunakan dalam analisis sentimen: Teknik yang diterima pakai: Mengintegrasikan analisis sentimen ke dalam strategi perdagangan bagaimana peniaga menggunakannya: Strategi Contoh: Dengan mengandaikan senario senario perdagangan BTC Penetapan: Isyarat Emosi: Tafsiran Pedagang: Keputusan: Batasan dan Risiko Analisis Sentimen Menggunakan Emosi Kajian 2025 baru -baru ini oleh Hamid

Apabila memproses set data besar yang melebihi memori dalam python, mereka tidak boleh dimuatkan ke dalam RAM pada satu masa. Sebaliknya, strategi seperti pemprosesan pemprosesan, penyimpanan cakera atau streaming harus diterima pakai; Fail CSV boleh dibaca dalam ketulan melalui parameter Pandas 'dan blok diproses oleh blok. Dask boleh digunakan untuk merealisasikan penjadualan dan penjadualan tugas yang serupa dengan sintaks pandas untuk menyokong operasi data memori yang besar. Tulis fungsi penjana untuk membaca fail teks mengikut baris untuk mengurangkan penggunaan memori. Gunakan format penyimpanan kolumnar parket yang digabungkan dengan pyarrow untuk membaca lajur atau kumpulan baris tertentu dengan cekap. Gunakan Memmap Numpy untuk memori peta tatasusunan berangka besar untuk mengakses serpihan data pada permintaan, atau menyimpan data dalam data ringan seperti SQLite atau DuckDB.

UsePrint () StatementStoCheckVariableValuuesandExecutionFlow, AddingLabelSandTypesforClarity, andRemoveThembeforeCommitting; 2.Usethepythondebugger (PDB) withbreakpoint () TopAuseExecution, InspectVariables, danStepThoughleShoughleShoughleShoTHoughleShoughleShoughleShoTHoughleVariable, danStepThoughleShoTHoughleShoTheShoThoTheShoThoTheShoThereShoTher ()

PenggunaanSublimetext'sbuildsystemtorunpythonscriptsandcatcherrorsbypressingctrl baftersettingthecorrectbuildsystemorcreatingacustomone.2.insertstrategicprint () statementShocheckVariahvariues, types, andexecutionflow, menggunakanLabelsandre.

Pastikan Python dipasang dan ditambah ke laluan sistem, jalankan Python-versi atau Python3-pengesahan versi melalui terminal; 2. Simpan fail python sebagai lanjutan .py, seperti hello.py; 3. Buat sistem binaan tersuai dalam sublimetext, pengguna Windows menggunakan {"cmd": ["python", "-u", "$ file"]}, pengguna macOS/linux menggunakan {"cmd": ["python3

Untuk menyahpepijat skrip python, anda perlu terlebih dahulu memasang lanjutan python dan mengkonfigurasi penterjemah, kemudian buat fail launch.json untuk menetapkan konfigurasi debugging, kemudian tetapkan titik putus dalam kod dan tekan F5 untuk memulakan debugging. Skrip akan dijeda pada titik putus, membolehkan pembolehubah pemeriksaan dan pelaksanaan langkah demi langkah. Akhirnya, dengan memeriksa masalah dengan melihat output konsol, menambah log atau menyesuaikan parameter, dan lain -lain, untuk memastikan bahawa proses debugging adalah mudah dan cekap selepas persekitaran adalah betul.

FlatteninganestedlistinpythonconvertsalistwithsublistsIntoasingleFlatlist, andthebestmethoddependsonThenestingDepthanddatasize.forone levelnesting, uselistcomprehension [
