프로그램언어+/┗Crawling

BeautifulSoup 기본 및 활용

logthink 2018. 7. 12. 02:59

[기본]

import urllib.request

import urllib.parse


○ GET요청시 3가지 포인트


1. 방식

GET, POST, PUT, DELETE

2. 대상

http://www.naver.com  => 호스트이름

3. 추가 정보

-경로 : /images/adb

-데이터 : ?board=1&id=50


위를 코딩해보자.


api = "http://www.naver.com"

values = {

"board" : "1",

"id" : "50",

}



import urllib.request  #밑의 url 내용을 들고 올 수 있게 해주는 모듈

from bs4 import BeautifulSoup # BeautifulSoup들고와서 밑에 객체 만들


url = ""

response = urllib.request.urlopen(url)


soup = BeautifulSoup(response, "html.parser") #soup객체를 통해 사용가능(첫번째 인자는 응답 또는 문자, 두번째인자는 파서)

results = soup.select()

for result in results:

    print(results.string)


○ 환율 가져오기

http://lol.inven.co.kr/dataninfo/champion/manualTool.php?champnum=2#liststart 기준

1단계 : 필요한 것이 어디 있는지 확인하기!  ex)네이버증시에서 오늘의증시 부분

2단계 : 뭘로 가져올지 확인하기 ex) span태그



import urllib.request  #밑의 url 내용을 들고 올 수 있게 해주는 모듈

from bs4 import BeautifulSoup # BeautifulSoup들고와서 밑에 객체 만들


url = "http://lol.inven.co.kr/dataninfo/champion/manualTool.php?champnum=36#liststart"

response = urllib.request.urlopen(url)


soup = BeautifulSoup(response, "html.parser") #soup객체를 통해 사용가능(첫번째 인자는 응답 또는 문자, 두번째인자는 파서)

results = soup.select("div[class=champName]") #  #section_body strong   /   

for result in results:

    print(result.string)


소스코드 中




추가 지시자로는

1) section body의 <a href>태그의 속성 가져올때

soup.select("#section_body a")

print(attrs["title])




#A가 빈 문자열이라면 continue로 돌아가게하고, str의 0번째 문자가  '<'가 아닐경우에 실행하라

if A == "":

continue

if str[0] not in ["<"]

pass



○ request로 로그인하기


로그인 기능은 세션이란 기능이 있는데, urllib 모듈로만 하기에는 한계가 있다.

그래서 추가 외부 모듈 사용하자.


pip install requests 해서 다운받고


세션을 만드는 방법은 session = requests.session() 으로 만든다.

session.get(url)

session.put(url)

session.head(url)

session.delete(url)

이런식으로 사용하고, 해당 동작을 response라는 객체에 담아 사용하자.

response = session.get(url)


그리고 

response.raise_for_status()         이러면 요청이 실제로 걸리고,

response.text로 텍스트를 가져와 사용가능.


url = "http://google.com"



import requests

from bs4 import BeautifulSoup

#요청을 모방하자


session = requests.session()


url = "http://test.nanum.info:82/admin/default.asp"

data = {

    "return_url": "http://test.nanum.info:82/admin/default.asp",

    "m_id":"admin",

    "m_pwd":"admin",

    }

response = session.post(url, data=data)

response.raise_for_status()


url = "http://test.nanum.info:82/admin/member_list.asp"

response = session.get(url)

response.raise_for_status()

soup = BeautifulSoup(response.text, "html.parser")

text = soup.find("")

print(text)


소스코드 中