728x90
웹 크롤러(Web Crawler)
자동화된 방법으로 웹(WEB)에서 다양한 정보를 수집하는 소프트웨어를 의미합니다. 예를 들어 특정한 웹 사이트에 주기적으로 올라오는 글을 실시간으로 문자로 알림해주는 서비스 등을 만들고 싶을 때 사용할 수 있습니다.
웹 크롤러가 매우 유용한 이유는 원하는 서비스로부터 원하는 정보를 편하게 얻어올 수 있기 때문입니다.
또한 웹 크롤러는 언어를 막론하고 자신이 원하는 언어로 개발할 수 있습니다.
뷰티풀 수프(Beautilful Soup)를 이용한 예제
뷰티풀 수프는 특정 웹 사이트의 소스코드를 가져와 자유자재로 파싱(Parsing)하는 작업에 큰 도움을 줍니다.
import requests
from bs4 import BeautifulSoup
# 특정 URL에 접속하는 요청(Request) 객체를 생성합니다.
request = requests.get('http://www.dowellcomputer.com/main.jsp')
# 접속한 이후의 웹 사이트 소스코드를 추출합니다.
html = request.text
# HTML 소스코드를 파이썬 객체로 변환합니다.
soup = BeautifulSoup(html, 'html.parser')
# <a> 태그를 포함하는 요소를 추출합니다.
links = soup.select('td > a')
# 모든 링크에 하나씩 접근합니다.
for link in links:
# 링크가 href 속성을 가지고 있다면
if link.has_attr('href'):
# href 속성의 값으로 notice라는 문자가 포함되어 있다면
if link.get('href').find('notice') != -1:
print(link.text)
https://ndb796.tistory.com/120
Scrapy를 사용한 예제
# -*- coding: utf-8 -*-
import scrapy
import sys
from scrapy.spiders import Spider
from scrapy.selector import HtmlXPathSelector
from APT2U.items import APT2UItem
from scrapy.http import Request
from scrapy.selector import Selector
reload(sys)
sys.setdefaultencoding('utf-8')
class APT2U_Spider(scrapy.Spider):
name = "APT2U" #spider 이름
allowed_domains = ["www.apt2you.com"] #크롤링할 최상위 도메인
start_urls = ["http://www.apt2you.com/houseSaleSimpleInfo.do"] #실제 크롤링할 주소
def parse(self, response):
hxs = Selector(response) #지정된 주소에서 전체 소스코드를 가져옴
selects =[] #전체 소스코드 중에서 필요한 영역만 잘라내서 담을 리스트
selects = hxs.xpath('//tbody[@class="line"]/tr') #필요한 영역을 잘라서 리스트에 저장
items = [] #데이터를 Item별로 구별해서 담을 리스트
for sel in selects:
item = APT2UItem() #item 객체 선언
item['aptname'] = sel.xpath('th[@scope="row"]/a[@href="#none"]/text()').extract() #주택명 추출
item['link'] = sel.xpath('th[@scope="row"]/a/@onclick').re('\d+') #링크 추출
item['link'][0] = "http://www.apt2you.com/houseSaleDetailInfo.do?manageNo="+item['link'][0] #전체링크주소구성
item['company'] = sel.xpath('td[1]/text()').extract() #건설업체 추출
item['receiptdate'] = sel.xpath('normalize-space(td[2]/text())').extract() #청약기간 추출
item['result_date'] = sel.xpath('td[@class="end"]/text()').extract() #당첨자발표일 추출
items.append(item) #Item 1개 세트를 리스트에 담음
return items
https://uslifelog.tistory.com/45
Selenium를 사용한 예제
는 다른 게시글로 ㅎ
+ Phantom JS라는 것도 있는 듯
[출처]
728x90
'Python > Crawling' 카테고리의 다른 글
Selenium - xpath (0) | 2023.05.04 |
---|---|
Selenium - 아래 또는 위로 스크롤하는 방법 (0) | 2023.05.04 |
Selenium - Waits (0) | 2023.05.04 |
Web Driver & Selenium (0) | 2023.05.04 |
TextRank를 이용한 문서 요약 (0) | 2023.05.03 |