
Proyek ini dibuat untuk pengikis web otomatis agar mudah membuat gesekan. Ini mendapatkan URL atau konten HTML dari halaman web dan daftar data sampel yang ingin kami gosok dari halaman itu. Data ini dapat berupa teks, URL atau nilai tag HTML dari halaman itu. Ini mempelajari aturan pengikis dan mengembalikan elemen yang sama. Kemudian Anda dapat menggunakan objek yang dipelajari ini dengan URL baru untuk mendapatkan konten serupa atau elemen yang sama persis dari halaman -halaman baru tersebut.
Ini kompatibel dengan Python 3.
$ pip install git+https://github.com/alirezamika/autoscraper.git$ pip install autoscraper$ python setup.py installKatakanlah kami ingin mengambil semua judul posting terkait di halaman stackoverflow:
from autoscraper import AutoScraper
url = 'https://stackoverflow.com/questions/2081586/web-scraping-with-python'
# We can add one or multiple candidates here.
# You can also put urls here to retrieve urls.
wanted_list = [ "What are metaclasses in Python?" ]
scraper = AutoScraper ()
result = scraper . build ( url , wanted_list )
print ( result )Inilah outputnya:
[
'How do I merge two dictionaries in a single expression in Python (taking union of dictionaries)?' ,
'How to call an external command?' ,
'What are metaclasses in Python?' ,
'Does Python have a ternary conditional operator?' ,
'How do you remove duplicates from a list whilst preserving order?' ,
'Convert bytes to a string' ,
'How to get line count of a large file cheaply in Python?' ,
"Does Python have a string 'contains' substring method?" ,
'Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?'
] Sekarang Anda dapat menggunakan objek scraper untuk mendapatkan topik terkait dari setiap halaman stackoverflow:
scraper . get_result_similar ( 'https://stackoverflow.com/questions/606191/convert-bytes-to-a-string' )Katakanlah kami ingin mengikis harga saham langsung dari Yahoo Finance:
from autoscraper import AutoScraper
url = 'https://finance.yahoo.com/quote/AAPL/'
wanted_list = [ "124.81" ]
scraper = AutoScraper ()
# Here we can also pass html content via the html parameter instead of the url (html=html_content)
result = scraper . build ( url , wanted_list )
print ( result ) Perhatikan bahwa Anda harus memperbarui wanted_list jika Anda ingin menyalin kode ini, karena konten halaman berubah secara dinamis.
Anda juga dapat melewati parameter modul requests khusus. Misalnya Anda mungkin ingin menggunakan proxy atau header khusus:
proxies = {
"http" : 'http://127.0.0.1:8001' ,
"https" : 'https://127.0.0.1:8001' ,
}
result = scraper . build ( url , wanted_list , request_args = dict ( proxies = proxies ))Sekarang kita bisa mendapatkan harga simbol apa pun:
scraper . get_result_exact ( 'https://finance.yahoo.com/quote/MSFT/' ) Anda mungkin ingin mendapatkan info lain juga. Misalnya jika Anda ingin mendapatkan kapitalisasi pasar juga, Anda bisa menambahkannya ke daftar yang diinginkan. Dengan menggunakan metode get_result_exact , ia akan mengambil data sebagai urutan yang sama persis dalam daftar yang diinginkan.
Contoh lain: katakanlah kita ingin mengikis teks tentang, jumlah bintang dan tautan ke masalah halaman repo github:
from autoscraper import AutoScraper
url = 'https://github.com/alirezamika/autoscraper'
wanted_list = [ 'A Smart, Automatic, Fast and Lightweight Web Scraper for Python' , '6.2k' , 'https://github.com/alirezamika/autoscraper/issues' ]
scraper = AutoScraper ()
scraper . build ( url , wanted_list )Sederhana, kan?
Kami sekarang dapat menyimpan model yang dibangun untuk menggunakannya nanti. Untuk menyimpan:
# Give it a file path
scraper . save ( 'yahoo-finance' )Dan untuk memuat:
scraper . load ( 'yahoo-finance' )Jangan ragu untuk membuka masalah jika Anda memiliki masalah menggunakan modul.