Halo, Khabrovchans! Untuk waktu yang lama ada keinginan untuk menulis artikel, tetapi tidak berani.
Serangkaian posting saya akan menjelaskan jalur saya dari Junior ke Tengah, dan bahkan mungkin ke Senior. Kami akan memprogram dengan Python.
Dokumentasi PS untuk beberapa perpustakaan yang kurang dikenal akan dilampirkan di bagian akhir.
Secara singkat tentang diri saya: Python mulai belajar dua tahun lalu, tidak ada kemajuan khusus.
Dasar-dasar itu sendiri menjadi kecewa, karena saya mengajar mereka selama satu setengah tahun. Sekarang saya sedang mempelajari bahasa secara mendalam, saya mengerti strukturnya dan bagaimana semuanya terjadi. Dalam artikel berikut saya akan mengunggah kodenya, gunakan semua pustaka baru dan baru, dan seperti yang Anda tahu python punya banyak :)
Di mana untuk memulai? Beberapa bulan yang lalu saya menulis parser pertama saya. Ternyata menulis parser cukup sederhana dan Anda bahkan dapat menghasilkan uang darinya. Sejauh ini, saya akan menunjukkan kepada Anda beberapa contoh menggunakan tumpukan dari
permintaan bs4 + . Kami akan mengurai
Habr kita tercinta.
Tidak yakin apakah semua orang akrab dengan perpustakaan
fake_useragent . Ini cukup nyaman untuk parsing, itu menciptakan agen-pengguna palsu.
ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox}
Ini adalah blok kecil berikutnya dari kode kita. Di baris pertama, kami membuat variabel ua, yang menggunakan metode kelas UserAgent. Di baris kedua, kami telah membuat kamus yang akan membantu kami dengan penguraian di masa mendatang.
Sekarang buat fungsi itu sendiri untuk parsing.
def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error")
Fungsi ini akan mem-parsing tautan, yang kami tunjukkan keberadaan tag dengan kelas "post__title_link".
Cara termudah untuk menyimpan data adalah menyimpannya ke file. Jadi mari kita lakukan.
url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
Pada akhirnya, kami mendapatkan file yang berisi nama dan tautan posting yang kami kumpulkan dari halaman pertama.
Kode sumber (lengkap), hanya tanpa komentar:
from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
Hasil yang bagus! Kecuali untuk lompatan garis dan komentar, kami bertemu persis 20 baris. Sebagai permulaan, cukup bagus :)
Seperti yang dijanjikan, tautan ke dokumentasi perpustakaan yang digunakan:
Permintaan:
* peras *bs4:
* peras *fake_useragent:
* squeeze *Terima kasih atas perhatian Anda! Sampai ketemu lagi!
PS Jika ada umpan balik, maka artikel berikut tidak akan lama datang