Sunday, January 25, 2015

python: web scraping with BeautifulSoup

BeautifulSoup html, xml parse işlemleri için kullanabileceğiniz bir modül. iterating, searching, ve modifying işlemleri gerçekleştirebilirsiniz.

https://pypi.python.org/pypi/beautifulsoup4/4.3.2 adresinden temin edilebilir.

Xubuntu ortamında kurulumu pip ile aşağıdaki şekilde gerçekleştirdim.
Testlerimde Python 2.7.6 (default, Mar 22 2014, 22:59:56) sürümü kullandım.


Kurulum:

aokan$ sudo pip install beautifulsoup4

Örnekler:
#!/usr/bin/python
from bs4 import BeautifulSoup, NavigableString
import urllib2

url="http://www.siyahsapka.org"
soup=BeautifulSoup(urllib2.urlopen(url).read())
# style tanimi olan span'ların style'larini temizle
for span in soup('span',style=True):
    del span['style']


# tekrar eden break tag'larini (<br> veya <br />) teke indir. arada strong olsa dahi calis.
for br in soup('br'):
    sibling = br.next_sibling
    while sibling:
        if isinstance(sibling, NavigableString):
            sibling = sibling.next_sibling
            continue
        if sibling.name == 'br':
            sibling.decompose()
        elif sibling.name != 'strong':
            break
        sibling = sibling.next_sibling

# strong tag'i arasinda bulunan break (<br> veya <br />) ifadelerini temizle.
for strong in soup('strong'):
    for br in strong('br'):
        br.decompose()


# <a tag'i ile belirtilen link'leri  sadece icerisindeki text kalacak sekilde temizle.
for a in soup('a'):
    a.unwrap()

# gelen html'de yer alan <iframe tag ve içeriğini temizle.
for iframe in soup('iframe'):
    iframe.decompose()

# formatlama isleminden sonra istedigim div icindeki veriyi al
content=unicode(soup.find('div',attrs={'class':'txtIn'}))

Detaylar için http://www.crummy.com/software/BeautifulSoup/bs4/doc/



Eğer biçimlendireceğiniz html veya url sayısı 1000 üzerinde ise bu işlemleri multithread yapmanıza imkan sağlayan scrapy ile gerçekleştirmek daha doğru olacaktır.

No comments:

Post a Comment