728x90
XML이란 내부적으로 트리 구조를 가지고 있는 파일을 표현하기 위해 사용하는 마크업 언어다.
웹페이지를 보여주기 위해 사용되는 html 파일이 XML의 가장 대표적인 예시다.
네이버 뉴스 가져오기는 실패하여 일단 기능 테스트를 위해 네이버지식인 정보가져오기를 시도했더니 잘된다.
#파이썬 크롤링 기초
# pip install lxml 을 윈도우 cmd 창에서 실행한다.
# pip install --upgrade pip
# pip list
# pip install requests
# pip install cssselect
from typing import get_args
import requests
from lxml.html import fromstring, tostring
def main():
"""
네이버 지식인 스크랩핑 메인 함수
"""
# 세션 사용
session = requests.Session()
# 스크랩핑 대상 URL (GET, POST)
response = session.get("https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC")
# 신문사 링크 리스트 획득
urls = scrape_news_list_page(response)
# 딕셔너리 확인
# print(urls)
# 결과 출력
for name, url in urls.items():
# url 출력
print(name, url)
# 파일 쓰기
# 생략
def scrape_news_list_page(response):
# url 리스트 선언
urls = {}
# 태그 정보 문자열 저장
#print(response.content)
root = fromstring(response.content)
#print(root)
for a in root.xpath('//ul[@class="basic1"]/li/dl/dt/a[@class="_nclicks:kin.txt _searchListTitleAnchor"]'):
# a 구조 확인
# print(a)
# a 문자열 출력
# print(tostring(a, pretty_print=True))
name, url = extract_conents(a)
# 딕셔너리 삽입
urls[name] = url
return urls
def extract_conents(doc):
# 링크 주소
link = doc.get("href")
name = doc.text_content()
return name, link
# 스크랩핑 시작
if __name__ == "__main__":
main()
|
크롤링을 위한 Chrome 브라우저 개발자 모드 html 코드보기 예시이다.
테스트에 사용한 파이썬 소스 코드
위 코드와 아래 BeautifulSoup4 를 이용한 코드 비교를 해보면 훨씬 더 간단하다는 걸 알 수 있다.
# 네이버 검색결과 크롤러 만들기
# BeautifulSoup은 HTML 과 XML 파일로부터 데이터를 수집하는 라이브러리
# pip install bs4
# pip install requests
import requests
from bs4 import BeautifulSoup
#import ssl
url = 'https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'
response = requests.get(url)
if response.status_code == 200:
html = response.text
soup = BeautifulSoup(html, 'html.parser')
ul = soup.select_one('ul.basic1')
titles = ul.select('li > dl > dt > a')
for a in titles:
print(a.get_text(), end=' : ')
print(a.get('href'))
else :
print(response.status_code)
|
728x90
'Web 크롤링 > Python Crawling' 카테고리의 다른 글
[크롤링기초] 행정안전부 RSS 정보 크롤링 예제 (0) | 2021.06.22 |
---|---|
[크롤링기초] 사이트 정보 확인 (0) | 2021.06.22 |
네이버 헤드라인 뉴스 가져오기 실패 그리고 성공 (0) | 2021.06.22 |
[크롤링기초] beautifulSoup 사용 예제 (0) | 2021.06.21 |
[파이썬] 크롤링 기초 예제 네이버 이미지 다운로드 (0) | 2021.06.17 |