웹스크래핑

2023. 10. 1. 10:53파이썬/웹스크래핑

#html 기본 형태
<html> 
    <head>
        <meta charset="utf-8">
        <title>홈페이지</title>
    </head>
    <body> #본문내용
        <input type="text" value = '아이디를 입력하세요'> 
        <input type="password">
        <input type="button" value="로그인">
        <a href="http://google.com">구글로 이동하기</a>
    </body>
</html>

 

requests 모듈 

import requests
#res=requests.get('http://naver.com   #get을 이용해 링크 가져오기
res=requests.get('http://google.com')
#res=requests.get('http://nadocoding.tistory.com')
print('응답코드 :',res.status_code) #status_code : 200출력은 정상

# if res.status_code==requests.codes.ok:
#     print('정상입니다')
# else:
#     print('문제가 생겼습니다. [에라코드 :]',res.status_code,']') 

res.raise_for_status() #옳바른 코드를 가져오면 문제 x / else 에러발생
print('웹 스크래핑을 진행합니다')

print(len(res.text))
print(res.text)

with open('mygoogle.html','w',encoding='utf8') as f: #mygoogle.html열기 / w:쓰기 기능
    f.write(res.text)  
    
    
    #status_code : 응답 코드
 #raise_for_status() : 200 ok 코드가 아닌 경우 에러 발동

 

 

re 모듈

import re
#abcd, book, desk
#ca?e
#care,cafe,case,cave

p=re.compile('ca.e') 
#.(ca.e) : 하나의 문자를 의미 >care,cafe,case |caffe(x)
#^(^de) : 문자열의 시작 > desk,destination | fade (x)
# $(se$) : 문자열의 끝 > case,base | fece (x)

def print_match(m):
    if m:
        print('m.group():',m.group()) #일치하는 문자열 반환
        print('m.string():',m.string) #입력받은 문자열
        print('m.start():',m.start()) #일치하는 문자열의 시작 index
        print('m.end():',m.end()) #일치하는 문자열의 끝 index
        print('m.span():',m.span()) #일치하는 문자열의 시작 / 끝 index
        
    else:
        print('매칭 안됨')

m=p.match("careless")  #match :주어진 문자열의 처음부터 일치하는지 확인
print_match(m)

m=p.search('good care') #search :주어진 문자열 중에 일치하는게 있는지 확인

lst=p.findall('good care cafe') #findall : 일치하는 모든 것을 ★***리스트 형태로 반환
print(lst)

#원하는 형태 : 정규식
#.(ca.e) : 하나의 문자를 의미 >care,cafe,case |caffe(x)
#^(^de) : 문자열의 시작 > desk,destination | fade (x)
# $(se$) : 문자열의 끝 > case,base | fece (x)

.은 문자 하나를 의미 
^는 문자열의 시작을 의미한다.
$는 문자의 끝부분을 의미한다.
import requests
from bs4 import BeautifulSoup

url='https://series.naver.com/comic/recommendList.series'
res=requests.get(url)
res.raise_for_status()

soup=BeautifulSoup(res.text,'lxml')
# print(soup.title)
# print(soup.title.get_text())
#print(soup.a)
#print(soup.a.attrs) #a element 의 속성 정보를 출력 아래 어떤 속성을 가지고 있는지
#print(soup.a['href']) #soup  a 태그에서 처음 발견되는 href 속성 값 출력

#print(soup.find('a',attrs={'class':'Nbtn_upload'}))  #class=nbtn_upload 인 a element찻기
#print(soup.find(attrs={'class':'Nbtn_upload'})) #class = ''인 어떤 element를 찾기

print(soup.find('a',attrs={'a':}))

BeautifulSoup은 HTML을 스크래핑, 검색 등을 용이하게 만든 라이브러리이고, lxml은 String형식의 HTML문서를 살아있는 HTML문서, 의미있는 문서로 만들어주는 역할

 

'파이썬 > 웹스크래핑' 카테고리의 다른 글

user agent  (0) 2024.03.11
정규식  (0) 2024.03.11
[웹스크래핑]requests  (0) 2024.03.11
XPath  (0) 2024.03.11
html 기초 구조  (0) 2024.03.11