2017년 3월 17일 금요일

python을 이용한 웹 크롤링

python을 이용한 웹 크롤링

다음 코드는 원하는 사이트의 url을 분석하여 원하는 URL list를 랜덤으로 출력할 수 있는 코드이다.


from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import re
random.seed(datetime.datetime.now())

#/URL/<article_name> 형태 URL을 받아 getLink 함수 반환 / 계속해서 링크 정보를 수집함

def getLinks(articleUrl):
    html = urlopen("[URL]"+articleUrl)
    bsObj = BeautifulSoup(html, "html.parser")
    return bsObj.find("div", {"id":"bodyContent"}).findAll("a",href=re.compile("^(/wiki/)((?!:).)*$"))

links = getLinks("[URL]")
while len(links) > 0:
    newArticle = links[random.randint(0, len(links)-1)].attrs["href"]
    print(newArticle)
    links = getLinks(newArticle)


''' v1.1 
항목 링크와 다른 링크를 구분하는 패턴 - id가 bodyContent인 div안에 있을 경우 / ; 들어가는 경우 / /kk/ 로 시작하는 경우
html = urlopen("URL")
bsObj = BeautifulSoup(html, "html.parser")
for link in bsObj.find("div", {"id":"bodyContent"}).findAll("a",href=re.compile("^(/kk/)((?!:).)*$")):
    if 'href' in link.attrs:
        print(link.attrs['href'])
'''

''' v1.0
이렇게 긁어오면 필요하지 않은 위키 url을 긁어 오게됨
html = urlopen("URL")
bsObj = BeautifulSoup(html, "html.parser")
for link in bsObj.findAll("a"):
    if 'href' in link.attrs:
        print(link.attrs['href'])
'''     

댓글 없음:

댓글 쓰기