0

Making simple Url Crawler using BeautifulSoup, Crawl adalah teknik yang biasa digunakan untuk mengambil sesuatu dalam website, dan dalam hal ini yang paling banyak digunakan adalah crawl link.

Lalu bagaimana dengan python? apakah python sendiri juga bisa digunakan untuk teknik crawling? Jawabannya adalah sangat bisa, beberapa tools pengembangan dari python yang terkenal seperti scrapy, BeautifulSoup dan masih banyak lainnya.

Pada artikel kali ini kita akan sedikit bahas secara singkat bagaimana sebenarnya teknik crawl tersebut dilakukan, dan bagaimana simple scriptnya.

Salah satu module yang akan kita bahas kali ini yaitu module BeautifulShoup, jika dalam python2.7, seperti ini cara memanggilnya: from bs4 import BeautifulSoup.

Jika ingin tahu functions apa saja yang bisa digunakan, kita bisa melihatnya dengan teknik dir(nama_module).

>>> from bs4 import BeautifulSoup
>>> dir(BeautifulSoup)
['DEFAULT_BUILDER_FEATURES', 'FORMATTERS', ......, 'string', 'strings', 'stripped_strings', 'tag_name_re', 'text', 'unwrap', 'wrap']
>>>

Setidaknya ada banyak sekali function yang dapat kita gunakan. Mari kita lihat bagaimana penerapannya:

from bs4 import BeautifulSoup
html = '''<a href="http://python.web.id">Python Learning</a>
<span class="class"><a href="http://python.web.id/sample/">Sample</a></span>'''

soup = BeautifulSoup(html)
for a in soup.findAll('a', href=True):
    print a['href']

Dan setelah kita execute, maka akan menghasilkan output berupa:

>>> 
http://python.web.id
http://python.web.id/sample/
>>> 

Teknik diatas adalah merupakan teknik yang paling dasar untuk dapat meng-crawl sebuah url, dalam hal ini penerapannya masih dalam sebuah variable berupa string.

Bagaimana dengan cara crawl url yang sederhana di sebuah website?
Untuk mengakses sebuah website, kita membutuhkan salah satu module berupa urllib. Mari kita lihat script dibawah ini:

import urllib
from bs4 import BeautifulSoup
url = 'http://python.web.id'
soup = BeautifulSoup(url)

def crawl(url):
    start = urllib.urlopen(url)
    soup = BeautifulSoup(start)
    for a in soup.findAll('a', href=True):
        print a['href']

crawl(url)

Setelah di execute, maka akan menghasilkan seperti ini kurang lebihnya:

/
/about/
/sitemap/
/resource/
/contact/
#nav-collapse3
/blog/how-to-use-pillow-a-fork-of-pil/
/author/1
/tag/module
/blog/how-to-use-pillow-a-fork-of-pil/
/blog/how-setup-postgresql-database-in-django/
/author/1
/tag/django
/tag/module
/tag/settings
/tag/database

Timbul pertanyaan, mengapa yang muncul tidak terdapat nama domainnya? misalkan http://python.web.id/. Ini disebabkan dari BeautifulShoup‘nya yang mengidentifikasi isi dari variable href yang ada didalam tag a, yaitu di soup.findAll('a', href=True):.

Jika kita lakukan inspect element F12, atau View page source CTRL+U pada http://python.web.id/, maka bisa kita lihat banyak yang didalam a href=" hanya terdapat kelanjutan dari slug.

Nah begitulah tadi teknik crawling sederhana dengan menggunakan module BeautifulShoup di Python.
Semoga bermanfaat.

grabber python

Your Answer

blog comments powered by Disqus