selenium beautifulsoup
페이지 정보
작성자 조희승 댓글 0건 조회 2,671회 작성일 21-02-07 21:02본문
apt install python3-selenium python3-bs4 chromium-chromedriver
a.py -----------------------
#!/usr/bin/python3
from selenium import webdriver
import time
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# selenium에서 사용할 웹 드라이버 절대 경로 정보
chromedriver = '/usr/bin/chromedriver'
# selenum의 webdriver에 앞서 설치한 chromedirver를 연동한다.
driver = webdriver.Chrome(chromedriver, chrome_options=chrome_options)
# driver로 특정 페이지를 크롤링한다.
driver.get('https://auto.naver.com/bike/mainList.nhn')
print("+" * 100)
print(driver.title) # 크롤링한 페이지의 title 정보
print(driver.current_url) # 현재 크롤링된 페이지의 url
print("바이크 브랜드 크롤링")
print("-" * 100)
# 바이크 제조사 전체 페이지 버튼 클릭
bikeCompanyAllBtn = driver.find_element_by_css_selector("#container > div.spot_main > div.spot_aside > div.tit > a")
bikeCompanyAllBtn.click()
time.sleep(3)
# 바이크 제조사 1번 페이지 진입해서 바이크 리스트 추출
allBikeCompanyElement = driver.find_elements_by_css_selector(
"#_vendor_select_layer > div > div.maker_group div.emblem_area > ul > li")
# 바이크 첫 페이지 크롤링
for item in allBikeCompanyElement:
bikeComName = item.find_element_by_tag_name("span").text
if (bikeComName != ''):
print("바이크 회사명:" + bikeComName)
ahref = item.find_element_by_tag_name("a").get_attribute("href")
print('네이버 자동차 바이크제조사 홈 sub url:', ahref)
imgUrl = item.find_element_by_tag_name("img").get_attribute("src")
print('바이크 회사 엠블럼:', imgUrl)
time.sleep(3)
# 바이크 제조사 리스트의 다음 페이지 버튼을 찾아서 클릭하자.
nextBtn = driver.find_element_by_css_selector(
"#_vendor_select_layer > div > div.maker_group > div.rolling_btn > button.next")
# 다음 바이크 제조사 페이지 버튼이 활성화 여부
isExistNextPage = nextBtn.is_enabled()
if (isExistNextPage == True):
print("다음 페이지 존재함=======================================>")
nextBtn.click()
allBikeCompanyElement = driver.find_elements_by_css_selector(
"#_vendor_select_layer > div > div.maker_group div.emblem_area > ul > li")
for item in allBikeCompanyElement:
bikeComName = item.find_element_by_tag_name("span").text
if (bikeComName != ''):
print("바이크 회사명:" + bikeComName)
ahref = item.find_element_by_tag_name("a").get_attribute("href")
print('네이버 자동차 바이크제조사 홈 sub url:', ahref)
imgUrl = item.find_element_by_tag_name("img").get_attribute("src")
print('바이크 회사 엠블럼:', imgUrl)
# 크롤링이 끝나면 webdriver 브라우저를 종료한다.
# driver.quit()
----------------------------------------
b.py ---------------------------
#!/usr/bin/python3
from selenium import webdriver
from bs4 import BeautifulSoup
import time
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# selenium에서 사용할 웹 드라이버 절대 경로 정보
chromedriver = '/usr/bin/chromedriver'
# selenum의 webdriver에 앞서 설치한 chromedirver를 연동한다.
driver = webdriver.Chrome(chromedriver, chrome_options=chrome_options)
# driver로 특정 페이지를 크롤링한다.
driver.get('https://search.shopping.naver.com/search/all?query=선물세트')
SCROLL_PAUSE_SEC = 1
# 스크롤 높이 가져옴
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# 끝까지 스크롤 다운
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 1초 대기
time.sleep(SCROLL_PAUSE_SEC)
# 스크롤 다운 후 스크롤 높이 다시 가져옴
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
#print(driver.page_source)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
f = open("tmp/index.html", 'w')
f.write(soup.prettify())
f.close()
# 크롤링이 끝나면 webdriver 브라우저를 종료한다.
driver.quit()
----------------------------------------------
a.py -----------------------
#!/usr/bin/python3
from selenium import webdriver
import time
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# selenium에서 사용할 웹 드라이버 절대 경로 정보
chromedriver = '/usr/bin/chromedriver'
# selenum의 webdriver에 앞서 설치한 chromedirver를 연동한다.
driver = webdriver.Chrome(chromedriver, chrome_options=chrome_options)
# driver로 특정 페이지를 크롤링한다.
driver.get('https://auto.naver.com/bike/mainList.nhn')
print("+" * 100)
print(driver.title) # 크롤링한 페이지의 title 정보
print(driver.current_url) # 현재 크롤링된 페이지의 url
print("바이크 브랜드 크롤링")
print("-" * 100)
# 바이크 제조사 전체 페이지 버튼 클릭
bikeCompanyAllBtn = driver.find_element_by_css_selector("#container > div.spot_main > div.spot_aside > div.tit > a")
bikeCompanyAllBtn.click()
time.sleep(3)
# 바이크 제조사 1번 페이지 진입해서 바이크 리스트 추출
allBikeCompanyElement = driver.find_elements_by_css_selector(
"#_vendor_select_layer > div > div.maker_group div.emblem_area > ul > li")
# 바이크 첫 페이지 크롤링
for item in allBikeCompanyElement:
bikeComName = item.find_element_by_tag_name("span").text
if (bikeComName != ''):
print("바이크 회사명:" + bikeComName)
ahref = item.find_element_by_tag_name("a").get_attribute("href")
print('네이버 자동차 바이크제조사 홈 sub url:', ahref)
imgUrl = item.find_element_by_tag_name("img").get_attribute("src")
print('바이크 회사 엠블럼:', imgUrl)
time.sleep(3)
# 바이크 제조사 리스트의 다음 페이지 버튼을 찾아서 클릭하자.
nextBtn = driver.find_element_by_css_selector(
"#_vendor_select_layer > div > div.maker_group > div.rolling_btn > button.next")
# 다음 바이크 제조사 페이지 버튼이 활성화 여부
isExistNextPage = nextBtn.is_enabled()
if (isExistNextPage == True):
print("다음 페이지 존재함=======================================>")
nextBtn.click()
allBikeCompanyElement = driver.find_elements_by_css_selector(
"#_vendor_select_layer > div > div.maker_group div.emblem_area > ul > li")
for item in allBikeCompanyElement:
bikeComName = item.find_element_by_tag_name("span").text
if (bikeComName != ''):
print("바이크 회사명:" + bikeComName)
ahref = item.find_element_by_tag_name("a").get_attribute("href")
print('네이버 자동차 바이크제조사 홈 sub url:', ahref)
imgUrl = item.find_element_by_tag_name("img").get_attribute("src")
print('바이크 회사 엠블럼:', imgUrl)
# 크롤링이 끝나면 webdriver 브라우저를 종료한다.
# driver.quit()
----------------------------------------
b.py ---------------------------
#!/usr/bin/python3
from selenium import webdriver
from bs4 import BeautifulSoup
import time
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# selenium에서 사용할 웹 드라이버 절대 경로 정보
chromedriver = '/usr/bin/chromedriver'
# selenum의 webdriver에 앞서 설치한 chromedirver를 연동한다.
driver = webdriver.Chrome(chromedriver, chrome_options=chrome_options)
# driver로 특정 페이지를 크롤링한다.
driver.get('https://search.shopping.naver.com/search/all?query=선물세트')
SCROLL_PAUSE_SEC = 1
# 스크롤 높이 가져옴
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# 끝까지 스크롤 다운
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 1초 대기
time.sleep(SCROLL_PAUSE_SEC)
# 스크롤 다운 후 스크롤 높이 다시 가져옴
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
#print(driver.page_source)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
f = open("tmp/index.html", 'w')
f.write(soup.prettify())
f.close()
# 크롤링이 끝나면 webdriver 브라우저를 종료한다.
driver.quit()
----------------------------------------------
댓글목록
등록된 댓글이 없습니다.