Python periksa apakah url mengembalikan 404

Keberadaan URL dapat diperiksa dengan memeriksa kode status di header respons. Kode status 200 adalah respons Standar untuk permintaan HTTP yang berhasil dan kode status 404 berarti URL tidak ada

Fungsi yang Digunakan

  • get_headers() Fungsi. Itu mengambil semua header yang dikirim oleh server sebagai tanggapan atas permintaan HTTP
  • strpos() Fungsi. Fungsi ini digunakan untuk mencari kemunculan pertama suatu string menjadi string yang lain

Contoh 1. Contoh ini memeriksa kode status 200 di header respons. Jika kode statusnya 200, itu menandakan URL ada sebaliknya tidak




<?php

 

// Initialize an URL to the variable

$url ="//www.geeksforgeeks.org";

 

URL Doesn't Exist _1

URL Doesn't Exist 2 URL Doesn't Exist 3$urlURL Doesn't Exist 5

 

URL Doesn't Exist _7

URL Doesn't Exist 8URL Doesn't Exist 9URL Doesn't Exist 2 URL Doesn't Exist 1URL Doesn't Exist 2URL Doesn't Exist 9URL Doesn't Exist 2URL Doesn't Exist 5URL Doesn't Exist 6URL Doesn't Exist 7

URL Doesn't Exist 8URL Doesn't Exist 9 =<?php1;

<?php3

<?php4 <?php5

URL Doesn't Exist 8URL Doesn't Exist 9 =<?php9;

<?php3

 

 _3

 4URL Doesn't Exist 9URL Doesn't Exist 9URL Doesn't Exist 5

 

 _9

Keluaran

URL Exist

Contoh 2. Contoh ini memeriksa kode status 404 di header respons. Jika kode statusnya adalah 404, ini menunjukkan bahwa URL tidak ada, sebaliknya URL ada




<?php

 

// Initialize an URL to the variable

$url ="//www.geeksforgeeks.org";

 

URL Doesn't Exist _1

URL Doesn't Exist 2 URL Doesn't Exist 3$urlURL Doesn't Exist 5

 

URL Doesn't Exist _7

URL Doesn't Exist 8$url6URL Doesn't Exist 2 ________62______8URL Doesn't Exist 2URL Doesn't Exist 9URL Doesn't Exist 2URL Doesn't Exist 5=3URL Doesn't Exist 7

Pustaka HTTP requests_ untuk Python memungkinkan Anda membuat permintaan HTTP ke server dan menerima kembali kode status HTTP, konten situs, dan data lainnya. Ini sangat berguna untuk membangun proyek pengikisan web dan merupakan salah satu alat SEO Python yang paling banyak digunakan

Salah satu fitur yang sangat berguna dari requests bagi mereka yang bekerja di SEO, atau mendukung tim SEO menggunakan keterampilan ilmu data mereka, adalah bahwa paket tersebut dapat mengembalikan kode status HTTP dan mengalihkan informasi untuk URL. Ini bisa sangat berguna selama migrasi situs SEO

Apa itu migrasi situs?

Migrasi situs adalah nama teknis yang digunakan SEO untuk merujuk pada pemetaan ulang URL dari situs lama ke situs baru, atau domain lama ke situs baru. Selama migrasi situs SEO, tim SEO Anda akan mengidentifikasi semua URL dari situs lama Anda dan URL dari situs lama Anda, lalu membuat rencana pengalihan URL sehingga siapa pun yang mengunjungi URL lama dialihkan ke yang baru, tanpa menekan 404

Kumpulan data URL dari situs lama diambil dari berbagai sumber data, termasuk perayapan situs, Google Analytics, Google Search Console, dan alat SEO seperti Ahrefs, dan tidak hanya mencakup URL saat ini di situs, yang ada di

Setelah dua kumpulan data dibuat, pencocokan fuzzy (biasanya melalui fuzzywuzzy, atau baru-baru ini polyfuzz) dapat diterapkan untuk menemukan URL yang paling cocok di situs baru dengan yang ada di situs lama. Artinya, siapa pun yang membuka URL lama untuk, katakanlah, /how-to-keep-a-hamster akan dialihkan ke URL yang paling cocok di situs baru, meskipun sedikit berbeda, i. e. urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] _0

Mengapa mendeteksi pengalihan selama migrasi situs?

Jika Anda hanya membuat daftar semua URL lama dan memetakan masing-masing ke URL terdekat di situs baru, Anda berpotensi mengabaikan pengalihan yang ada yang mungkin telah dilakukan oleh administrator situs. Misalnya, jika produk di urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] _1 telah dihentikan, admin situs Anda mungkin telah menggantinya dengan urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] 2 dan membuat pengalihan. Namun, pencocokan fuzzy akan mengabaikan hal ini dan mengirim pengguna ke tempat yang berpotensi kurang relevan

Hal ini dapat mengakibatkan Anda mengalihkan lalu lintas ke halaman lain menggunakan pencocokan fuzzy dan mengabaikan alternatif yang dipilih manusia. Selanjutnya, saya akan menunjukkan kepada Anda bagaimana Anda dapat menggunakan urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] 3 untuk merayapi daftar URL dan mengidentifikasi apakah mereka dialihkan, dan ke mana. Ini dapat memberi Anda data tambahan untuk memastikan pengalihan yang lebih akurat selama migrasi situs Anda

Muat paket

Pertama, buka notebook Jupyter dan impor paket requests dan urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] 5. Kami akan menggunakan Panda untuk memuat dan memanipulasi data pada URL dan membuat kerangka data keluaran yang dapat kami simpan ke CSV, dan kami akan menggunakan requests untuk memeriksa setiap URL

import requests import pandas as pd

Muat datanya

Selanjutnya, muat daftar URL yang ingin Anda periksa. Saya telah menyertakan daftar sederhana di bawah ini, tetapi Anda mungkin memilikinya dalam file CSV. Jika demikian, Anda dapat mengekstrak kolom dan menyimpannya ke daftar menggunakan kode seperti ini. urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] _7. Itu akan mengambil kolom urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] _8 dalam kerangka data Anda dan mengembalikan daftar nilai untuk diperiksa

urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ]

Ulangi URL dan periksa pengalihan

Sekarang kami memiliki daftar URL untuk diperiksa, kami akan membuat urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] 9 loop untuk memeriksa masing-masing menggunakan requests. Sebelum melakukan ini, kami akan membuat kerangka data Pandas kosong bernama df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) 1 tempat kami akan menyimpan URL asli dan kode status HTTP-nya (i. e. 200 untuk OK, 301 untuk pengalihan permanen, 302 untuk pengalihan sementara, atau 404 untuk halaman tidak ditemukan), lalu kami akan mencatat URL tujuan dan kode status HTTP tujuan jika pengalihan terdeteksi

Kami akan meneruskan setiap URL ke requests_ dan membuat permintaan GET, meneruskan agen pengguna untuk membantu memastikan server mengembalikan respons (beberapa server tidak akan mengembalikannya jika Anda tidak memberikan string agen pengguna). Kemudian kami akan membuat kamus kosong dan menangkap nilainya

Jika objek df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) 3 dari requests berisi nilai di df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) 5 itu berarti kita memiliki pengalihan, jadi kita dapat mengambil urls = [ '//bbc.co.uk/iplayer', '//facebook.com/', '//www.theguardian.co.uk', '//practicaldatascience.co.uk' ] 8 dan df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) 7 dan menyimpannya. Jika tidak ada ________ 45 ______ 5, maka tidak ada pengalihan yang ditemukan dan kami hanya dapat menyimpan URL asli dan kode status serta beberapa nilai kosong

df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True)

{'original_url': '//bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': '//www.bbc.co.uk/iplayer', 'destination_status': 200} {'original_url': '//facebook.com/', 'original_status': 301, 'destination_url': '//www.facebook.com/', 'destination_status': 200} {'original_url': '//www.theguardian.com/', 'original_status': 302, 'destination_url': '//www.theguardian.com/uk', 'destination_status': 200} {'original_url': '//practicaldatascience.co.uk/', 'original_status': 200, 'destination_url': '', 'destination_status': ''}

Saya telah mencetak setiap kamus df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) _9 sehingga saya dapat memantau kemajuan, kemudian saya menggunakan Pandas {'original_url': '//bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': '//www.bbc.co.uk/iplayer', 'destination_status': 200} {'original_url': '//facebook.com/', 'original_status': 301, 'destination_url': '//www.facebook.com/', 'destination_status': 200} {'original_url': '//www.theguardian.com/', 'original_status': 302, 'destination_url': '//www.theguardian.com/uk', 'destination_status': 200} {'original_url': '//practicaldatascience.co.uk/', 'original_status': 200, 'destination_url': '', 'destination_status': ''} 0 untuk menambahkan setiap df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) 9 ke kerangka data. Terakhir, kami dapat mencetak kerangka data df_output = pd.DataFrame(columns=['original_url', 'original_status', 'destination_url', 'destination_status']) for url in urls: response = requests.get(url, headers={'User-Agent': 'Google Chrome'}) row = {} if response.history: for step in response.history: row['original_url'] = step.url row['original_status'] = step.status_code row['destination_url'] = response.url row['destination_status'] = response.status_code else: row['original_url'] = response.url row['original_status'] = response.status_code row['destination_url'] = '' row['destination_status'] = '' print(row) df_output = df_output.append(row, ignore_index=True) _1 untuk melihat kode status HTTP dan mengarahkan ulang untuk setiap URL dalam daftar kami

original_urloriginal_statusdestination_urldestination_status0https. //bbc. bersama. uk/iplayer301https. // www. bbc. bersama. uk/iplayer2001https. //facebook. com/301https. // www. facebook. com/2002https. // www. penjaga. com/302https. // www. penjaga. com/uk2003https. // ilmu data praktis. bersama. uk/200

Periksa URL peta situs Anda untuk pengalihan

Aplikasi lain yang berguna dari teknik ini adalah untuk memeriksa URL peta situs Anda untuk pengalihan. Anda biasanya berharap salah satu halaman yang terdaftar di peta situs XML Anda tidak dialihkan ke halaman lain, jika tidak, pengguna tidak akan pernah bisa mencapai halaman yang diinginkan

Cara termudah untuk melakukannya adalah melalui paket EcommerceTools saya, yang dapat Anda instal dengan memasukkan perintah berikut di terminal Anda. {'original_url': '//bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': '//www.bbc.co.uk/iplayer', 'destination_status': 200} {'original_url': '//facebook.com/', 'original_status': 301, 'destination_url': '//www.facebook.com/', 'destination_status': 200} {'original_url': '//www.theguardian.com/', 'original_status': 302, 'destination_url': '//www.theguardian.com/uk', 'destination_status': 200} {'original_url': '//practicaldatascience.co.uk/', 'original_status': 200, 'destination_url': '', 'destination_status': ''} _3

Dengan menjalankan fungsi {'original_url': '//bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': '//www.bbc.co.uk/iplayer', 'destination_status': 200} {'original_url': '//facebook.com/', 'original_status': 301, 'destination_url': '//www.facebook.com/', 'destination_status': 200} {'original_url': '//www.theguardian.com/', 'original_status': 302, 'destination_url': '//www.theguardian.com/uk', 'destination_status': 200} {'original_url': '//practicaldatascience.co.uk/', 'original_status': 200, 'destination_url': '', 'destination_status': ''} _4 dan meneruskan URL peta situs XML Anda, Anda dapat membuat kerangka data Pandas yang berisi semua URL situs Anda dan kemudian memeriksa apakah URL tersebut dialihkan. Jika ya, Anda harus menghapus pengalihan agar halaman dapat dijangkau

Bagaimana saya memeriksa apakah responsnya 404 dengan Python?

status_code == 404. print('Tidak Ditemukan. ') Dengan logika ini, jika server mengembalikan kode status 200, program Anda akan mencetak Sukses. . Jika hasilnya 404 , program Anda akan mencetak Tidak Ditemukan.

Bagaimana saya tahu jika URL dapat dijangkau dengan Python?

Pendekatan. .
Impor modul
Lewati Url ke dalam permintaan. kepala()
Jika respon. status_code == 200 lalu server aktif
jika respon. status_code == 404 lalu server down

Bagaimana saya tahu jika respons saya adalah 404?

Jika Anda pernah ingin memeriksa apakah suatu halaman telah mengembalikan 404 karena alasan apa pun, salah satu cara termudah adalah dengan menggunakan fungsi pembantu kecil ini UrlExists() dengan . lokasi. href . Ini akan mengembalikan true jika status http adalah apa pun kecuali 404, jika tidak maka akan mengembalikan false.

Bagaimana Anda menekan URL dan mendapatkan respons dengan Python?

Mengambil URL .
impor urllib. permintaan dengan urllib. meminta. urlopen('http. //python. org/') sebagai tanggapan. html = tanggapan. .
impor shutil impor tempfile impor urllib. permintaan dengan urllib. meminta. urlopen('http. //python. org/') sebagai respons. dengan tempfile. .
impor urllib. permintaan req = urllib. meminta

Postingan terbaru

LIHAT SEMUA