준비하기
[bs4 install]
pip3 install --upgrade bs4
---------------------------------------
import urllib.requset
import urllib.parse
url ="http://xxx.xxx.xxx/img/test.png"
savename="test.png"
#download
urllib.request.urlretrieve(url, savename )
#memory 로 로드
mem = urllib.requst.urlopen(url).read()
with open(savename, mode="wb") as f:
f.write(mem)
print("saved");
방식 : GET, POST, PUT, DELETE
대상 : http://media.daum.net => 호스트 네임
추가정보
- 경로 : /photo-viewer
- 데이타: ?cid=318190#20170615103230763
요청 매개변수.
api = "https://search.naver.com/search.naver"
value ={
"where":"nexearch",
"sm":"top_hty",
"fbm":"1",
"ie":"utf8",
"query":"초콜릿"
}
params = urllib.parse.urlencode(values)
print (api)
print(params)
url = api +"?"+ params
data = urllib.request.urlopen(url).read()
text = data.decode("utf-8") // # euc-kr
print(text)
-------------------
BeautifulSoup 스크랩 툴.
pip BeautifulSoup
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
아래 두 함수 사용 css 선택자를 이용하여 선택하는 함수임.
css 선택자를 알아야 함.
soup.select_one()
soup.select()
<html><body>
<div id="meigen">
<h1> 위키북스 도서</h1>
<ul class= "items art it book"> => class를 여러개 사용.
<li>유니티 게임 인문</li>
</ul>
</div>
</body></html>
css 선택자 :
tag 선택자 :
"ul", "div", 'li" ...
id 선택
"#meigen" =>id
"#<id이름>"
class 선택자
".book.art.it.items" => 점으로
"ul.book"
".<클래스 이름>.<클래스 이름>.<클래스 이름>"
후손 선택자
"html li"
자식 선택자
"ul.items > li"ㄱ
list_items = soup.select("ul.items li") # 요소 의 배열
header = soup.select_on("body > div > h1") # 요소
print(header.string)
#header.attrs["title"]
print(soup.select_one("ul").attrs)
for li in list_items:
print(li.string)
---------------------------------
기사에서 마우스 오른쪽 클릭 ->검사
url = "http://news.naver.com/main/main.nhn?mode=LSD&mid=shm..."
response = urllib.request.urlopen(url)
soup = BeautifulSoup(response, "html.parser")
results = soup.select("#section_body a")
for result in results:
print("제목:", results.attrs["title"])
print("링크:", result.attrs["href"])
print("")
url_article = result.attrs["href"]
response = urllib.request.urlopen(url_article)
soup_article = BeautifulSoup(response, "html.parser")
content = soup_article.select_one("#articleBodyContests")
#print(content.contents) => 보기 않좋음
output=""
for item in content.contents:
#output += str(item)
stripped = str(item).strip()
if stripped =="":
continue
if stripped[0] not in ["<","/"]:
output += str(item).strip()
printf(output.replace("본문 내용TV플레이어",""))
time.slee(1) # server에서 과부화 걸리면 ip 차단함.. 그래서 회피를 위해 sleep
----------------------------------
import requests
from bs4 import BeautifulSoup
print("start")
#url = "http://ecos.bok.or.kr/jsp/vis/keystat"
url = "http://ecos.bok.or.kr/jsp/vis/keystat/Key100Stat_n.jsp"
#url = "http://news.naver.com/"
proxies = {
'http': 'http://ip:port',
'https': 'https://ip:port',
}
#proxy = req.ProxyHandler({'http': '168.219.61.252:8080'})
r = requests.post(url, proxies=proxies)
soup = BeautifulSoup(r.text,'lxml')
#with open("test.html", mode='wt') as f:
# f.write(r.text)
print(r.text)
#results = soup.select("#section_body a")
results = soup.select('tr')
for res in results:
print(res)
print("end")
------------------------------------
'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글
cer file을 pem 변환하기 (0) | 2020.01.14 |
---|---|
GAN 스터디 (0) | 2019.03.27 |
머신러닝 유투브 영상모음 (0) | 2018.03.29 |
Tensorflow training을 save하고 restore하는 방법 (0) | 2018.03.22 |
Matplotlib 사용하기 (0) | 2018.03.20 |