Python dapatkan semua tautan dari situs web

Jika Anda baru mengenal pengikisan web, saya akan merekomendasikan untuk memulai terlebih dahulu dengan tutorial pemula untuk pengikisan web dan kemudian beralih ke yang ini setelah Anda merasa nyaman dengan dasar-dasarnya

bagaimana kita mengekstrak semua tautan?

Kami akan menggunakan pustaka permintaan untuk mendapatkan halaman HTML mentah dari situs web dan kemudian kami akan menggunakan BeautifulSoup untuk mengekstrak semua tautan dari halaman HTML

Modul BeautifulSoup dirancang untuk web scraping. Modul BeautifulSoup dapat menangani HTML dan XML. Ini menyediakan metode sederhana untuk mencari, menavigasi, dan memodifikasi pohon parse

Kursus terkait
Otomasi Browser dengan Python Selenium

Dapatkan tautan dari situs web


Contoh di bawah ini mencetak semua tautan di halaman web.

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen("https://arstechnica.com")
soup = BeautifulSoup(html_page)
for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
print link.get('href')

Ini mengunduh kode html mentah dengan baris


html_page = urllib2.urlopen("https://arstechnica.com")

_

Objek BeautifulSoup dibuat dan kami menggunakan objek ini untuk menemukan semua tautan


soup = BeautifulSoup(html_page)
for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
print link.get('href')

Ekstrak tautan dari situs web ke dalam array


Untuk menyimpan tautan dalam larik yang dapat Anda gunakan.

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen("https://arstechnica.com")
soup = BeautifulSoup(html_page)
links = []

for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
links.append(link.get('href'))

print(links)


Jika Anda berulang kali mengekstrak tautan, Anda dapat menggunakan fungsi di bawah ini.

from BeautifulSoup import BeautifulSoup
import urllib2
import re

def getLinks(url):
html_page = urllib2.urlopen(url)
soup = BeautifulSoup(html_page)
links = []

for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
links.append(link.get('href'))

return links

print( getLinks("https://arstechnica.com") )

_

Kursus terkait
Otomasi Browser dengan Python Selenium

Kembali Berikutnya


Diposting di jaringan


12-08-2015

  • pengikisan web





Tinggalkan Balasan

Jangan isi ini jika Anda manusia.

Nama

Alamat email

Pesan

Mengirim pesan


Memproses halaman web dan menemukan sesuatu bisa menjadi tugas yang membosankan terutama jika Anda mencoba mengotomatiskan tugas ini. Hari ini kami akan membahas cara untuk Anda tentang cara mencapai ini

Kami akan memecah ini di bagian berikut

  • Mengapa berguna menggunakan Python untuk menemukan semua URL di halaman
  • Cara Menemukan Semua Tautan Di Halaman
  • Menguji Kode Kami Dengan Berbagai Halaman

Saya telah menggunakan ini dengan sukses di berbagai proyek dan bekerja dengan sangat baik dan telah menghemat banyak waktu saya untuk menemukan url di halaman web

Kami akan membahas poin demi poin untuk membuat Anda aktif dan berjalan dalam waktu kurang dari 5 menit, Anda tidak perlu memiliki pengetahuan pemrograman untuk menggunakan alat yang akan kami kembangkan di sini

Ini adalah panduan lengkap dan harus mencakup semua pertanyaan Anda tentang cara menggunakan Python untuk mengekstrak tautan dari sebuah halaman

Semua kode dan contoh tentang cara melakukannya dapat ditemukan di tautan Github di sini

Mengapa Berguna Menggunakan Python Untuk Menemukan Semua URL Di Halaman

Sebelum kita mulai membahas pengkodean apa pun, saya ingin meluangkan waktu dan membuat daftar beberapa alasan mengapa saya menggunakan Python untuk secara otomatis menemukan semua tautan di halaman web. Meskipun ada banyak alasan untuk melakukan ini secara terprogram sebagai tugas, bahkan ada alasan yang lebih kuat mengapa Anda ingin melakukan ini dengan Python secara khusus

Mari kita lihat daftarnya dan analisis poin demi poin

  • Python menawarkan dua pustaka hebat untuk menangani sebagian besar proses ini
    • permintaan. Pustaka permintaan memungkinkan Anda mengunduh halaman web dan menemukan konten htmlnya tanpa harus menulis kode pelat ketel apa pun. Ini mengabstraksi banyak kerumitan dari kode Anda dengan beberapa baris hanya dengan memanggil perpustakaan
    • beautifulsoup. Ini adalah perpustakaan hebat lainnya yang membantu kami melakukan tugas dalam tindakan di sini. Lebih khusus lagi, ini menganalisis konten html yang dikembalikan oleh perpustakaan permintaan kepada kami dan membaginya berdasarkan tag html. Berdasarkan pemisahan dan analisis ini, Anda dapat melakukan kueri tentangnya seperti yang akan kita lihat nanti di artikel ini
  • Mengotomatiskan proses dapat ditambahkan dalam banyak alat analisis yang bekerja pada URL. Beberapa contohnya adalah
    • Menggores
    • Pemeriksaan tautan (temukan tautan yang rusak dll)
    • Spidering web dan pencerminan
    • Analitik
    • Pemeriksaan kesalahan dan analisis sintaksis
  • Selain otomatisasi sekarang Anda dapat menambahkan logika bisnis dalam kode Anda setelah Anda memiliki ekstraksi URL. Misalnya jika Anda melihat URL di situs web Anda pergi ke tempat lain, Anda dapat melakukan tindakan di tempat yang sebaliknya akan sulit dilakukan secara manual
  • Anda dapat melakukan operasi dalam pekerjaan batch dan menskalakannya. Biasanya menganalisis halaman dan mengekstrak tautan adalah proses yang sangat membosankan dan panjang. Memiliki kode yang menjalankan dan melakukan ini untuk Anda menyelamatkan hidup dan memungkinkan Anda untuk fokus pada hal-hal lain yang lebih penting
  • Berbagi kode dengan situs web dan platform lain. Setelah Anda mengimplementasikan kode ini bisa menjadi perpustakaan dan dibagikan di antara rekan atau proyek lain yang bisa mendapatkan keuntungan dari hal-hal yang kami cantumkan sebelumnya

Cara Mengatur BeautifulSoup Dan Permintaan

Sekarang kami telah membuat daftar beberapa alasan mengapa penting untuk memiliki otomatisasi di gudang senjata Anda, kami akan membahas cara menyiapkan dan menjalankan lingkungan Anda

Untuk melakukan ini kami menganggap Anda memiliki dua hal yang terinstal di sistem Anda

  • Piton. Bahasa pemrograman Python
  • lingkungan virtual. Ini adalah aplikasi lingkungan virtual yang digunakan Python
  • PIP. Manajer paket Python

Ada banyak sumber dokumentasi online tentang cara memasangnya di sistem Anda, jadi untuk panduan ini saya akan melewatkan bagian tentang cara memasangnya

Mari kita bahas bagaimana Anda dapat mengatur sekarang kedua paket yang kami jelaskan sebelumnya

  • Sup Cantik
  • Permintaan

Untuk melakukan ini kita perlu mengikuti langkah-langkah ini

  • Inisialisasi lingkungan virtual yang akan kita gunakan dan aktifkan
  • Instal persyaratan seperti yang disediakan dalam persyaratan. txt yang saya tambahkan di repo Github yang dapat Anda temukan di sini

Proses tersebut dapat dilihat di bawah ini

$ virtualenv venv
created virtual environment CPython3.9.12.final.0-64 in 180ms
  creator CPython3Posix(dest=/Users/alex/code/unbiased/python-extract-urls-from-page/venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/alex/Library/Application Support/virtualenv)
    added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

$ source venv/bin/activate

$ pip install -r requirements.txt
Collecting requests
  Using cached requests-2.27.1-py2.py3-none-any.whl (63 kB)
Collecting beautifulsoup4
  Downloading beautifulsoup4-4.11.1-py3-none-any.whl (128 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 128.2/128.2 KB 2.0 MB/s eta 0:00:00
Collecting idna<4,>=2.5
  Using cached idna-3.3-py3-none-any.whl (61 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.9-py2.py3-none-any.whl (138 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2021.10.8-py2.py3-none-any.whl (149 kB)
Collecting charset-normalizer~=2.0.0
  Using cached charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting soupsieve>1.2
  Downloading soupsieve-2.3.2.post1-py3-none-any.whl (37 kB)
Installing collected packages: certifi, urllib3, soupsieve, idna, charset-normalizer, requests, beautifulsoup4
Successfully installed beautifulsoup4-4.11.1 certifi-2021.10.8 charset-normalizer-2.0.12 idna-3.3 requests-2.27.1 soupsieve-2.3.2.post1 urllib3-1.26.9

Seperti yang Anda lihat, ini telah berhasil menginstal dependensi Python di sistem kami. Kita sekarang dapat melanjutkan untuk memeriksa bagaimana kita dapat mengimplementasikan kode yang menggunakan pustaka ini dan menyatukan semuanya

Cara Menemukan Semua Tautan Di Halaman

Untuk mengimplementasikan kode ini seperti yang disebutkan sebelumnya, kami akan menggunakan dua paket Python yang akan membuat kode lebih pendek dan lebih mudah dipahami. Mari kita mulai dengan menganalisis cara kerja kode ini dalam contoh langkah demi langkah

  • Pertama kita akan mendefinisikan URL yang akan kita gunakan untuk mengunduh halaman, dalam contoh pertama ini kita akan menggunakan google. com
  • Setelah ini ditentukan, langkah selanjutnya adalah menggunakan pustaka permintaan untuk mengunduh konten html halaman ini
  • Langkah selanjutnya adalah mengekstrak html yang diunduh dari konten yang kami terima
  • Kami kemudian menggunakan konten html yang diunduh dan meneruskannya ke Beautifulsoup sehingga dapat menguraikannya dan memecahnya menjadi tag html
  • From the html tags we then extract only the type that are
  • From those tags we read in the href value which is basically the URL we are looking for and print it out

import requests
from bs4 import BeautifulSoup

page = 'https://www.google.com'
print (f'Downloading page: {page}')
res = requests.get(page)

print (f'Got back response: {res.status_code}')
print (f'Page length: {len(res.text)}')
html = res.text
bs = BeautifulSoup(html, features='html.parser')
hrefs = bs.find_all('a')
for href in hrefs:
    print (f'Found URL: {href.get("href")}')
_

Kode di atas menunjukkan langkah-langkah yang kami uraikan. Langkah selanjutnya adalah mengambil kode kita dan mengujinya di beberapa situs web, yang akan kita lakukan di bagian selanjutnya

Menguji Kode Kami Dengan Berbagai Halaman

Kami dapat memulai proses pengujian Anda dengan menjalankan ini melawan google. com. Halaman utama raksasa mesin pencari populer memiliki beberapa URL dan kami akan melihat apakah kode kami dapat mengekstraknya dengan sukses dan mencetaknya

Untuk melakukan ini, kami memanggil kode kami dan mengamati perilaku eksekusi

$ python ./python-find-urls-page.py
Downloading page: https://www.google.com
Got back response: 200
Page length: 14022
Found URL: https://www.google.com/imghp?hl=en&tab=wi
Found URL: https://maps.google.com/maps?hl=en&tab=wl
Found URL: https://play.google.com/?hl=en&tab=w8
Found URL: https://www.youtube.com/?gl=US&tab=w1
Found URL: https://news.google.com/?tab=wn
Found URL: https://mail.google.com/mail/?tab=wm
Found URL: https://drive.google.com/?tab=wo
Found URL: https://www.google.com/intl/en/about/products?tab=wh
Found URL: http://www.google.com/history/optout?hl=en
Found URL: /preferences?hl=en
Found URL: https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ
Found URL: /advanced_search?hl=en&authuser=0
Found URL: /intl/en/ads/
Found URL: /services/
Found URL: /intl/en/about.html
Found URL: /intl/en/policies/privacy/
Found URL: /intl/en/policies/terms/

Seperti yang dapat dilihat di atas kita mendapatkan hasil seperti yang diharapkan. Jika Anda melihat di halaman Google di bagian paling bawah ada beberapa tautan seperti

  • Pribadi
  • Persyaratan layanan
  • Tentang
  • Iklan

Semua hal di atas dapat dilihat di hasil cetak sebagai nama url deskriptif sendiri. Perlu dicatat bahwa beberapa URL tersebut mungkin tidak memiliki awalan lengkap yang merupakan domain root dari halaman dalam hal ini https. //google. com, sehingga kami dapat dengan mudah melakukan pra-penundaan ini kepada mereka dan kami akan memiliki URL lengkap yang memenuhi syarat untuk setiap halaman

Selanjutnya untuk melanjutkan pengujian kami, kami akan memberikan kode kami uji coba lagi untuk melihat seberapa baik kerjanya. Apa yang bisa lebih baik daripada mengujinya di blog ini Kode Tidak Memihak

Untuk kesederhanaan, eksekusi kode telah diabstraksi karena ada banyak tautan aktual yang ditemukan di halaman utama. Karena kode dibundel dalam repo Github di sini, Anda selalu dapat mengunduh kode dan menjalankannya sendiri seperti yang ditunjukkan di bawah ini

$ python ./python-find-urls-page.py
Downloading page: https://unbiased-coder.com
Got back response: 200
Page length: 85175
Found URL: https://unbiased-coder.com/category/programming/
Found URL: https://unbiased-coder.com/category/programming/python/
Found URL: https://unbiased-coder.com/category/programming/python/django/
Found URL: https://unbiased-coder.com/category/programming/python/boto3/
Found URL: https://unbiased-coder.com/category/programming/python/pytube/
Found URL: https://unbiased-coder.com/category/programming/python/tesseract/
Found URL: https://unbiased-coder.com/category/programming/python/pillow/
Found URL: https://unbiased-coder.com/category/programming/python/openai/
Found URL: https://unbiased-coder.com/category/programming/python/pip/
Found URL: https://unbiased-coder.com/category/programming/python/poetry/
Found URL: https://unbiased-coder.com/category/programming/python/spacy/
Found URL: https://unbiased-coder.com/category/programming/python/nltk/
Found URL: https://unbiased-coder.com/category/programming/python/beautifulsoup/
Found URL: https://unbiased-coder.com/category/programming/python/pdf/
Found URL: https://unbiased-coder.com/category/programming/python/pynamodb/
Found URL: https://unbiased-coder.com/category/programming/php/
....
_

Kode berhasil menarik semua URL dari https. // pembuat kode yang tidak bias. situs web com

Ada satu hal yang perlu kami catat di sini dan ini adalah Anda perlu melakukan sedikit penyesuaian kode untuk mencoba URL baru. Karena dalam kode yang ditunjukkan sebelumnya di bagian implementasi, kami memiliki baris berikut

page = 'https://www.google.com'
_

Baris di atas jelas menunjuk ke halaman web Google. Untuk menjalankannya di situs web yang berbeda, kami hanya perlu menyesuaikan nilainya di sana ke URL apa pun yang ingin kami tarik tautannya. Jadi misalnya jika kita menjalankan ini terhadap situs pembuat kode yang tidak memihak, ini akan terlihat seperti ini

page = 'https://unbiased-coder.com'

Kode lainnya dapat tetap utuh dan Anda dapat menggunakannya dengan cara yang sama. Perhatikan bahwa Anda juga dapat mengirimkan awalan URL tertentu dan tidak harus domain tingkat atas. Namun jika Anda meneruskan parameter ke kode, pastikan mereka diloloskan dengan benar dan dalam format URL yang disandikan agar berfungsi dengan benar

Jika Anda tidak yakin tentang cara melakukannya, lihat bagaimana browser seperti Google Chrome atau Safari menerjemahkannya untuk Anda. Saya juga dapat membantu Anda jika Anda membutuhkan saya untuk menguraikannya dengan memberikan saya baris di bawah ini

Kesimpulan

Kami berhasil membahas Cara Menemukan Semua Tautan Di Halaman Menggunakan Python, semoga saya menjawab pertanyaan apa pun yang mungkin Anda miliki dan membantu Anda memulai pencarian Anda untuk menemukan URL di halaman web

Jika menurut Anda ini berguna dan menurut Anda ini mungkin membantu Anda, silakan berikan dukungan kepada saya di bawah. Saya akan sangat menghargainya

Jika Anda memiliki pertanyaan, komentar, silakan kirim di bawah atau kirimkan saya catatan di twitter saya. Saya memeriksa secara berkala dan mencoba menjawabnya sesuai prioritas mereka. Juga jika Anda memiliki koreksi, tolong beri tahu saya dan saya akan memperbarui artikel dengan pembaruan atau kesalahan baru yang saya lakukan

Apakah Anda mempertimbangkan untuk menggunakan kode untuk mengekstrak URL dari halaman?

Saya pribadi menggunakan ini secara ekstensif untuk berbagai alasan penelitian. Python bisa menjadi alat yang hebat untuk melakukan tindakan ini dalam kode scraping, analitik, dan penambangan Anda. Offcourse hanya menggunakan ini di situs web yang Anda memiliki izin untuk menggunakannya atau yang diizinkan oleh persyaratan layanan situs web

Jika Anda ingin mengunjungi dokumentasi resmi BeautifulSoup di sini

Jika Anda ingin menemukan lebih banyak artikel terkait mengotomatiskan tugas dengan Python, Anda dapat memeriksa daftar di bawah ini

Bagaimana cara mengekstrak semua tautan dari situs web?

Alat Ekstraktor Tautan digunakan untuk mengekstrak tautan dari dokumen HTML. .
Klik kanan hyperlink
Dari menu Konteks, pilih Edit Hyperlink
Salin URL dari bidang Alamat
Tombol Esc untuk menutup kotak dialog Edit Hyperlink
Rekatkan URL ke sel mana pun yang diinginkan

Bagaimana cara mendapatkan semua tautan dari situs web di BeautifulSoup?

Langkah-langkah yang harus diikuti. get() metode dengan meneruskan URL ke sana. Membuat objek Parse Tree i. e. objek sup menggunakan metode BeautifulSoup() , meneruskannya dokumen HTML yang diekstraksi di atas dan parser HTML bawaan Python. Gunakan tag a untuk mengekstrak tautan dari objek BeautifulSoup.

Bagaimana cara mengikis banyak URL dengan Python?

Menggores beberapa Halaman situs web Menggunakan Python .
Kami akan mengimpor semua perpustakaan yang diperlukan
Siapkan string URL kami untuk membuat koneksi menggunakan pustaka permintaan
Mem-parsing data yang tersedia dari halaman target menggunakan pengurai perpustakaan BeautifulSoup

Bagaimana cara mendapatkan data URL dengan Python?

Mengambil URL .
impor urllib. permintaan dengan urllib. meminta. urlopen('http. //python. org/') sebagai respons. 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