<title> Hello, World</title> # 제목 요소, 값은 Hello, World
- URL에는 해당 서버가 위치한 인터넷 주소 정보인 도메인 네임이 있다. 흔히 도메인 정보 또는 서버 주소라고도 하는 이 주소를 통해 웹의 정보를 제공하는 서버에 접속.
- 일반적으로 컴퓨터는 인터넷 프로토콜 주소(Internet Protocol address), 즉 IP주소라고 부르는 주소값을 가짐.
- IP주소를 컴퓨터의 주소로 생각하면 이 주소에 접속하기 위해 사용하는 도메인 네임과 연결하기 위한 도메인 네임 서버(Domain Name Server, DNS)가 운영됨.
import urllib.request #urllib 모듈 호출.
url = "http://storage.googleapis.com/patents/grants_full_text/2014/ipg140107.zip"
# 다운로드 URL 주소.
print("Start Download")
fname.header = urllib.request.urlretrieve(url, 'ipg140107.zip')
print('End Download')
웹 페이지의 HTML을 분석하여 데이터를 추출하는 작업.
특정 텍스트를 분석하여 그 데이터로부터 필요한 정보 추출.
http://finance.naver.com/item/main--nhn?code=005930
→ 가장 좋은 방법은 데이블을 구성하는 HTML 페이지를 찾아 그 정보를 가져오는 것. 먼저 해당 웹 페이지를 열고 마우스 오른쪽 버튼을 누른 후, ‘페이지 소스 보기’를 클릭. 웹페이지의 정보가 있는 HTML 코드를 확인할 수 있다. 이 코드를 분석하여 원하는 정보만 따로 추출할 수 있는데, 이를 위해 해당 정보를 표현하는 코드의 패턴을 찾아 HTML 생성 규칙을 파악, 이를 추출하는 프로그램을 만들어야 함.
일반 문자 | 정규 표현식. |
---|---|
010-0000-0000 | ^\d{3}-\d{4}-\d{4}$ |
203.252.101.40 | ^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$ |
. ^ $ * + ? { } [ ] / | ( )
ex) [abc]는 어떤 텍스트에 a 또는 b 또는 c라는 텍스트가 있는지 찾으라는 뜻.
a, before, deep, dud, sunset
Ex) [A-Za-z]나 [가-힣]과 같은 기호로 문자열에서 알파벳과 한글을 추출할 수 있음.
[0-9]은 숫자 전체를 추출.
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
[0-9]+-[0-9]+-[0-9]+
ex) [a-zA-Z]{3, 4} 이면 알파벳이 3자부터 4자까지 출현할 수 있다는 뜻.
[0-9]{3}-[0-9]{3,4}-[0-9]{4}
import re
text = "문의사항이 있으면 032-232-3245 으로 연락주시기 바랍니다."
regex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
matchobj = regex.search(text)
phonenumber = matchobj.group()
print(phonenumber)
import re
import urllib.request
url = "http://goo.gl/U7mSQI"
html = urllib.request.urlopen(url)
html_contents = str(html.read())
id_results = re.findall("([A-Za-z0-9]+\*\*\*)", html_contents)
# findall 전체 찾기, 정규 표현식 패턴 대로 데이터 찾기.
for result in id_results: # 찾은 정보를 화면에 출력.
print(result)
→ 4행 접속할 웹 페이지의 링크 작성.
→ 5행 웹 페이지에 접속
→ 6행 해당 웹 페이지의 HTML 코드를 문자열로 가져옴.
→ HTML코드를 findall() 함수를 사용하여 정규 표현식 패턴에 넣어주면 패턴대로 데이터 추출 → id_results 변수에 넣어줌. 해당 변수는 튜플 형태로 반환되기 때문에 각각을 출력하기 위해서는 10행과 같이 for문 사용.
import urllib.request
import re
url = "http://www.google.com/googlebooks/uspto-patents-grants-text.html"
html = urllib.request..urlopen(url)
html_contents = str(html.read().decode("utf8"))
url_list = re.findall(r"(http)(.+)(zip)", html_contents)
for url in url_list:
full_url = "".join(url)
print(full_url)
fname,header = urllib.request.urlretrieve(full_url, file_name)
print("End Download")
(\)[\s\S]+?)(\<\/dl>)
(\)([\s\S]+?(\<\/dd>)
import urllib.request
import re
url = "http://finance.naver.com/item/main.nhn?code=005930"
html = urllib.request.urlopen(url)
html_contents = str(html.read().decode("ms949"))
# 첫 번째 HTML 패턴.
stock_results = re.findall("(\<dl class = \"blind\"\>)([\s\S]+?)(\<\/d'\>)",
html_contents)
samsung_stock = stock_results[0]
samsung_index = samsung_stock[1]
print(type(stock_results))
print(type(samsung_stock))
print(type(samsung_index))
idex_list = re.findall("(\<dd\>)([\s\S]+?)(\<\/dd\>)", samsung_index)
for index in index_list:
print(index[1])