Esempio n. 1
0
from Crawler import crawler
from pandas import DataFrame

total_url = 'http://books.toscrape.com/'
categories = crawler.select(
    total_url,
    selector=
    '#default > div > div > div > aside > div.side_categories > ul > li > ul > li > a'
)

categorie_list = []

for categorie in categories:
    categorie_list.append(categorie.text.strip().replace(' ', '-').lower())

# print('Total Categorie {}'.format(len(categorie_list)))

# for categorie_print in categorie_list:
#     print('categorie : {}'.format(categorie_print))

n = 1

main_url_list = []
full_url_list = []

for url_catgorie in categorie_list:
    main_url = 'http://books.toscrape.com/catalogue/category/books/{}_{}'.format(
        url_catgorie, (n + 1))

    full_url = main_url + '/index.html'
Esempio n. 2
0
from Crawler import crawler
from pandas import DataFrame

url = 'http://books.toscrape.com/catalogue/category/books/mystery_3/index.html'

page_list = []

page_n = crawler.select(url, selector='.pager > li.current')

for h in page_n:
    page_list.append(h.text.strip().split())

# print(page_list)

title_list = []
price_list = []

for n in range(int(page_list[0][1]), int(page_list[0][-1]) + 1):
    url_s = 'http://books.toscrape.com/catalogue/category/books/mystery_3/page-{}.html'.format(
        n)

    dom1 = crawler.select(url_s, selector='.product_pod > h3 > a')
    dom2 = crawler.select(url_s, selector='.product_price > p.price_color')

    for i in dom1:
        title_list.append(i.text)

    for j in dom2:
        price_list.append(j.text.lstrip('£'))

# print(title_list)
Esempio n. 3
0
#/section12/04-use_mod.py

# 크롤러 모듈 사용하기

# Crawler.py에 있는 75행 crawler객체
from Crawler import crawler
from sample import naver_news_url

# 가져올 페이지의 URL과 추출할 영역의 CSS 셀렉터를 지정한다
html = crawler.select(naver_news_url, encoding="euc-kr", selector="#articleBodyContents")

# 크롤링 결과의 원소 수 만큼 반복하면서 불필요한 태그를 제거한다.
for item in html:
     crawler.remove(item, "script")
     crawler.remove(item, "a")
     crawler.remove(item, "br")
     crawler.remove(item, "span")\

# 크롤링 처리된  최종 결과
print(item.text.strip())
Esempio n. 4
0
from Crawler import crawler
from print_df import print_df
from pandas import DataFrame

"""
데이터 수집 - 네이버 메인에서 실시간 검색어 순위 가져오기
"""
# 실시간 검색어 순위에 해당하는 CSS 셀렉터 설정
dom = crawler.select('https://www.naver.com',
                     selector='.ah_roll_area > .ah_l > .ah_item > .ah_a > .ah_k')

# 요소 확인(20개의 원소가 포함된 리스트가 반환)
# print(dom)

"""
데이터 전처리 - 수집 결과가 저장된 리스트의 원소에 대해 반복하면서
랭킹과 키워드를 분리하고 그 결과를 데이터 프레임으로 만들기
"""
# 데이터프레임의 인덱스로 사dyd하기 위해 순위를 저장할 리스트
rank_list = []

# 검색어를 저장할 리스트
keyword_list = []

# 크롤링 결과수 만큼 반복하면서 순위와 검색어를 리스트에 분류
for i, item in enumerate(dom):
    rank_list.append('%02d위' % (i + 1))
    keyword_list.append(item.text.strip())

# 데이터 프레임 생성
df = DataFrame(keyword_list, index=rank_list, columns=['검색어'])
Esempio n. 5
0
from collections import Counter
from konlpy.tag import Okt
import datetime as dt

#------------------------------------------------------------
# 1) 접속조건 설정하기
#------------------------------------------------------------
URL = "https://news.naver.com/"
url_list = []   # 뉴스기사의 본문 URL을 저장할 리스트

#------------------------------------------------------------
# 2) 수집할 뉴스기사의 URL 조사하기
#------------------------------------------------------------
# 가져온 URL에서 링크에 대한 셀렉터를 크롤링 -> 반환결과는 List형태
# -> 여러 형식의 셀렉터를 동시에 처리해야 할 경우 콤마(,)로 구분하여 지정한다.
link_list = crawler.select(URL, encoding="euc-kr",
                    selector=".newsnow_tx_inner > a, .newsnow_imgarea > a, .mtype_img > dt > a, .mlist2 > li > a")

# 가져온 결과 확인하기
for item in link_list:
    print(item)
    print("-" * 30)

# 리스트의 원소들에 대한 반복 처리
for item in link_list:
    print(type(item.attrs))
    # 각 원소(링크)에 속성들(attrs) 중에
    # href 속성이 있다면 그 속성값을 별도로 준비한 리스트에 추가
    if "href" in item.attrs:
        # href속성은 링크를 클릭했을 때의 URL을 의미한다.
        # URL에 뉴스 상세 페이지의 파일명인 "read.nhn"이 포함되어 있다면
        # 해당 주소를 url_list에 추가한다.
Esempio n. 6
0
from Crawler import crawler, Conversation
import requests
from bs4 import BeautifulSoup
import re
import time

url = 'https://basicenglishspeaking.com/daily-english-conversation-topics/'

keyword_list = []
keyword_list2 = []

keyword = crawler.select(
    url, selector='#tve_editor > div.thrv_wrapper.thrv-columns > div > div > div > div > p > a')

for i in keyword:
    keyword_list.append(i.text.replace(' ', '-'))

for j in keyword_list:
    text = re.sub('[/]', '', j)
    keyword_list2.append(text)

print('총 {} 개의 주제를 찾았습니다.'.format(len(keyword_list2)))

i = 1

for b in keyword_list2:
    print('({} / {})주제: {}'.format(i, len(keyword_list2), b))
    i += 1

conversations = []
from Crawler import crawler

naver_news_url = "https://news.naver.com/main/read.nhn?mode=LS2D&mid=shm&sid1=105&sid2=283&oid=008&aid=0004151505"
"""
웹 페이지 크롤링
- 모듈 장점 : 반복적인 코드를 함수로 묶어두고 재사용하기 때문에 전체적인 코드 구현 과정 단축
"""
element = crawler.select(naver_news_url,
                         encoding="euc-kr",
                         selector='#articleBodyContents')

# 크롤링 결과의 원소 수 만큼 반복하면서 불필요한 태그를 제거한다.
for item in element:
    crawler.remove(item, 'script')
    crawler.remove(item, 'a')
    crawler.remove(item, 'br')
    crawler.remove(item, 'span', {'class': 'end_photo_org'})

    # 크롤링 처리된 최종 결과
    print(item.text.strip())
Esempio n. 8
0
from Crawler import crawler
from print_df import print_df
from pandas import DataFrame
from pandas import concat

s = str(input('검색할 내용을 입력하세요 : '))

# 크롤링 할 사이트 주소 -> 네이버 쇼핑에서 "노트북"으로 검색한 결과
site_url = "https://search.shopping.rla.com/search/all.nhn?origQuery={0}&pagingIndex=1&pagingSize=80&viewType=list&sort=rel&frm=NVSHATC&query={0}".format(
    s)

# 결과를 저장할 빈 데이터 프레임
df = DataFrame()

# 상품 목록 영역 크롤링
html = crawler.select(site_url, selector=".info", encoding="utf-8")

# 검색된 상품목록 영역 수 만큼 반복
for item in html:
    # 하나의 상품 정보를 담기 위한 빈 딕셔너리
    info = {}

    # 상품명 추출
    # -> class 이름으로 상품명 영역 추출
    title_list = item.select('.tit')
    # -> 상품명은 하나만 존재하므로 0번째에 직접 접근하여 텍스트 추출
    title = title_list[0].text.strip()
    # -> 추출된 결과를 빈 딕셔너리에 추가
    info['제품명'] = title

    # 가격 추출