웹스크래핑
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 |