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 ="https://www.geeksforgeeks.org";

 

URL Doesn't Exist
_1

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

 

URL Doesn't Exist
_7

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

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

<?php3

<?php4 <?php5

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

<?php3

 

 _3

 4

URL Doesn't Exist
9
URL Doesn't Exist
9
URL 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 ="https://www.geeksforgeeks.org";

 

URL Doesn't Exist
_1

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

 

URL Doesn't Exist
_7

URL Doesn't Exist
8$url6
URL Doesn't Exist
2 ________62______8
URL Doesn't Exist
2
URL Doesn't Exist
9
URL Doesn't Exist
2
URL Doesn't Exist
5=3
URL 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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://practicaldatascience.co.uk'
]
_1 telah dihentikan, admin situs Anda mungkin telah menggantinya dengan
urls = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://practicaldatascience.co.uk'
]
_7. Itu akan mengambil kolom
urls = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://practicaldatascience.co.uk'
]
_8 dalam kerangka data Anda dan mengembalikan daftar nilai untuk diperiksa

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

Ulangi URL dan periksa pengalihan

Sekarang kami memiliki daftar URL untuk diperiksa, kami akan membuat

urls = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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 = [
    'https://bbc.co.uk/iplayer',
    'https://facebook.com/',
    'http://www.theguardian.co.uk',
    'https://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': 'https://bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': 'https://www.bbc.co.uk/iplayer', 'destination_status': 200}
{'original_url': 'https://facebook.com/', 'original_status': 301, 'destination_url': 'https://www.facebook.com/', 'destination_status': 200}
{'original_url': 'https://www.theguardian.com/', 'original_status': 302, 'destination_url': 'https://www.theguardian.com/uk', 'destination_status': 200}
{'original_url': 'https://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': 'https://bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': 'https://www.bbc.co.uk/iplayer', 'destination_status': 200}
{'original_url': 'https://facebook.com/', 'original_status': 301, 'destination_url': 'https://www.facebook.com/', 'destination_status': 200}
{'original_url': 'https://www.theguardian.com/', 'original_status': 302, 'destination_url': 'https://www.theguardian.com/uk', 'destination_status': 200}
{'original_url': 'https://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': 'https://bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': 'https://www.bbc.co.uk/iplayer', 'destination_status': 200}
{'original_url': 'https://facebook.com/', 'original_status': 301, 'destination_url': 'https://www.facebook.com/', 'destination_status': 200}
{'original_url': 'https://www.theguardian.com/', 'original_status': 302, 'destination_url': 'https://www.theguardian.com/uk', 'destination_status': 200}
{'original_url': 'https://practicaldatascience.co.uk/', 'original_status': 200, 'destination_url': '', 'destination_status': ''}
_3

Dengan menjalankan fungsi

{'original_url': 'https://bbc.co.uk/iplayer', 'original_status': 301, 'destination_url': 'https://www.bbc.co.uk/iplayer', 'destination_status': 200}
{'original_url': 'https://facebook.com/', 'original_status': 301, 'destination_url': 'https://www.facebook.com/', 'destination_status': 200}
{'original_url': 'https://www.theguardian.com/', 'original_status': 302, 'destination_url': 'https://www.theguardian.com/uk', 'destination_status': 200}
{'original_url': 'https://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