Artikel ini adalah blog teknis yang disusun oleh AI Research Institute, dengan judul asli:
Cara Mengikis Web dengan Python dalam 4 Menit
Terjemahan | Pengoreksian M.Y. Li | Hanya 2 penyelesaian | Gadis Nanas
Tautan asli:
https://towardsdatascience.com/how-to-web-scrape-with-python-in-4-minutes-bc49186a8460
Gambar dari https://www.freestock.com/free-photos/illustration-english-window-blue-sky-clouds-41409346
Scraping web adalah teknologi yang secara otomatis mengunjungi situs web dan mengekstrak banyak informasi, yang dapat menghemat banyak waktu dan energi. Pada artikel ini, kami akan menggunakan contoh sederhana untuk mengilustrasikan cara mengunduh ratusan file secara otomatis dari New York MTA. Ini adalah latihan yang bagus untuk pemula yang ingin belajar bagaimana melakukan web scraping. Scraping web bisa sedikit rumit, jadi tutorial ini akan menjelaskan langkah-langkah untuk mengajar.
Data MTA New York
Kami akan mengunduh data tentang pintu putar di stasiun kereta bawah tanah transportasi umum New York dari situs web ini:
Dari Mei 2010 hingga sekarang, data pintu putar ini dikumpulkan setiap minggu, jadi ada ratusan file .txt di situs web. Di bawah ini adalah beberapa fragmen data, setiap tanggal adalah tautan ke file .txt yang dapat diunduh.
Sulit untuk mengklik kanan setiap link secara manual dan menyimpannya secara lokal, untungnya kami memiliki web crawling!
Catatan penting tentang perayapan web:
1. Bacalah syarat dan ketentuan situs web dengan saksama untuk memahami bagaimana menggunakan data ini secara legal. Sebagian besar situs web melarang Anda menggunakan data untuk tujuan komersial.
2. Pastikan Anda tidak mengunduh data terlalu cepat, karena ini dapat menyebabkan situs web macet dan Anda mungkin diblokir dari mengakses jaringan.
Periksa situs web
Hal pertama yang perlu kita lakukan adalah mencari tahu bagaimana menemukan tautan ke file yang ingin kita unduh dari markup HTML multi-level. Singkatnya, halaman situs web memiliki banyak kode, dan kami ingin menemukan cuplikan kode relevan yang berisi data yang kami butuhkan. Jika Anda tidak terbiasa dengan tag HTML, silakan merujuk ke tutorial W3sekolah. Agar berhasil melakukan perayapan web, penting untuk memahami dasar-dasar HTML.
Klik kanan pada halaman web dan klik "Periksa", yang memungkinkan Anda untuk melihat kode asli situs.
Setelah mengklik "Periksa", konsol ini akan muncul.
Menghibur
Harap dicatat bahwa ada simbol panah di sudut kiri atas konsol.
Jika Anda mengeklik panah ini dan kemudian mengeklik area situs web itu sendiri, konsol akan menyorot kode untuk item tertentu itu. Saya mengklik file data pertama, yaitu Sabtu, 22 September 2018, dan konsol menyorot tautan ke file tersebut.
< a href = data / nyct / turnstile / turnstile_180922.txt > Sabtu, 22 September 2018 < /Sebuah >
Harap dicatat bahwa semua file .txt dalam format
Di dalam tanda di baris sebelumnya. Saat Anda melakukan lebih banyak perayapan web, Anda akan menemukannya
Digunakan untuk hyperlink.
Sekarang kita telah menentukan lokasi tautan, mari mulai pemrograman!
Kode Python
Kami pertama kali mengimpor pustaka berikut.
permintaan impor
import urllib.request
waktu impor
dari bs4 import BeautifulSoup
Selanjutnya, kami menetapkan url sebagai situs web target dan menggunakan perpustakaan permintaan kami untuk mengakses situs tersebut.
url = 'response = requests.get (url)
Jika akses berhasil, Anda akan melihat output berikut:
Selanjutnya, kami menggunakan struktur data bertingkat html. Jika Anda tertarik untuk mempelajari lebih lanjut tentang perpustakaan ini, silakan periksa dokumentasi BeautifulSoup.
soup = BeautifulSoup (response.text, "html.parser")
Kami menggunakan metode .findAll untuk menemukan semua file
< Sebuah >
menandai.
soup.findAll ('a')
Kode ini telah menemukan semua
< Sebuah >
Segmen kode yang ditandai. Informasi yang kami minati dimulai pada baris 36. Tidak semua tautan adalah yang kami inginkan, tetapi sebagian besar begitu, sehingga kami dapat dengan mudah memisahkan dari baris 36. Berikut ini adalah bagian dari informasi yang dikembalikan BeautifulSoup kepada kami ketika kami memasukkan kode di atas.
semua < Sebuah > Menandai Sub-set
Selanjutnya, mari kita ekstrak tautan sebenarnya yang kita inginkan. Uji tautan pertama terlebih dahulu.
one_a_tag = soup.findAll (a) link = one_a_tag
Kode ini menyimpan data / nyct / turnstile / turnstile_le_180922.txt ke tautan variabel kami. URL lengkap dari data yang diunduh sebenarnya adalah " saya menemukan ini dengan mengklik file data pertama di situs web sebagai tes. Kita dapat menggunakan perpustakaan urllib.request untuk mengunduh jalur file ini ke komputer kita. Kami menyediakan ve ke request.urlretrieve dan menyediakan dua parameter: url file dan nama file. Untuk file saya, saya menamakannya "turnstile_le_180922.txt", "t", "turnstile_180901", dll.
download_url = linkurllib.request.urlretrieve (download_url,. / + link)
Last but not least, kita harus menyertakan baris kode berikut sehingga kita dapat menjeda kode untuk berjalan selama satu detik sehingga kita tidak mengirim spam ke situs web melalui permintaan, yang membantu kita menghindari ditandai sebagai spammer .
waktu tidur (1)
Sekarang kita telah memahami cara mengunduh file, mari kita coba rangkaian kode lengkap untuk merayapi data pintu putar menggunakan situs web.
# Impor perpustakaan
permintaan impor
import urllib.request
waktu impor
dari bs4 import BeautifulSoup
# Atur URL yang Anda inginkan untuk webscrape
url = 'http: //web.mta.info/developers/turnstile.html'
# Hubungkan ke URL
respon = requests.get (url)
# Parse HTML dan simpan ke objek BeautifulSoup¶
soup = BeautifulSoup (response.text, "html.parser")
# Untuk mengunduh seluruh kumpulan data, mari lakukan perulangan for melalui semua tag
untuk i dalam kisaran (36, len (soup.findAll ('a')) + 1): # 'a' tag adalah untuk tautan
one_a_tag = soup.findAll ('a')
link = one_a_tag
download_url = 'http: //web.mta.info/developers/'+ tautan
urllib.request.urlretrieve (download_url, '. /' + link)
time.sleep (1) #pause the code for a sec
Anda dapat menemukan catatan Jupyter saya di Github saya. Terima kasih telah membaca, jika Anda menyukai artikel ini, silakan klik tombol Tepuk sebanyak mungkin.
Saya berharap Anda senang merayapi web!
Ingin terus melihat link terkait dan referensi artikel ini?
Poke link:
AI Research Institute memperbarui konten menarik setiap hari, klik [baca teks asli] di akhir artikel untuk menonton konten yang lebih menarik:
Rekomendasi hati nurani: postingan pengalaman ilmu komputer 20 minggu (dengan sumber daya)
Pelacak multi-target: Gunakan OpenCV untuk mencapai pelacakan multi-target (C ++ / Python)
Menghasilkan kumpulan data yang besar, sintetis, beranotasi, dan realistis untuk computer vision
Dalam penghormatan kepada Paul Allen, selain lingkaran teknologinya, siapa lagi yang layak dipercaya?
Menunggu Anda untuk menerjemahkan:
Demistifikasi jaringan dalam untuk mencegah overfitting
Kumpulan data baru tentang pengenalan aktivitas
Gunakan Excel untuk menjelaskan konvolusi multi-layer
Bagaimana mengembangkan model prakiraan autoregresif untuk peramalan deret waktu polusi udara multi-langkah
Nama panggilan ekstra ~
Untuk lebih banyak sumber belajar yang terkait dengan bidang AI, Anda dapat mengunjungi bagian sumber daya dari AI Research Society untuk mengunduh,
Semua sumber daya saat ini gratis untuk waktu yang terbatas. Selamat datang di pusat sumber daya komunitas
Unduh ~
KTT Pendidikan Adaptasi Cerdas + AI Global
Tiket gratis terbuka untuk aplikasi!
Leifeng.com, bekerja sama dengan Yixue Education Squirrel AI, dan IEEE Educational Engineering and Adaptive Education Standards Working Group, menyelenggarakan Global AI + Smart Adaptive Education Summit pada tanggal 15 November di Beijing Kerry Center. Akademisi American Academy of Sciences, juara pembelajaran mesin Michael Jordan, dan ayah pembelajaran mesin Tom Mitchell telah mengonfirmasi kehadiran mereka , Membawa Anda mengungkap masa kini dan masa depan pendidikan adaptasi cerdas AI.
Pindai kode QR untuk mendaftar secara gratis
- TVB TVB mengumumkan bahwa istrinya hamil, dan dituduh "naik bus sebelum mengarang tiket" setelah kurang dari sebulan menikah?
- Menjadi bagian dari keindahan drama Jin Yong gaya Hong Kong, mereka mengejutkan seluruh arena dalam satu abad terakhir
- Pratinjau CNCC 2018 akan dibuka Kamis ini, dan 15 laporan yang diundang akan diumumkan (dengan agenda lengkap konferensi disertakan)
- Perbarui kontrak TVB untuk cinta dalam hidup saya Saya merindukan Chen Hao, Liu Bier yang tidak beruntung
- Di balik pendapatan 11,2 miliar pada 2016, ada reorganisasi internal dan refleksi dari Bioskop Wanda