{"id":1388,"date":"2013-11-22T10:23:06","date_gmt":"2013-11-22T10:23:06","guid":{"rendered":"http:\/\/brain.payzip.co.kr\/?p=1388"},"modified":"2013-11-22T10:23:06","modified_gmt":"2013-11-22T10:23:06","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac-%eb%9d%bc%ec%9d%b4%eb%b8%8c%eb%9f%ac%eb%a6%ac-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/blog.goorigo.com\/?p=1388","title":{"rendered":"scrap &#8211; beautifulsoup4"},"content":{"rendered":"<p>\ud30c\uc774\uc36c \ub2e4\uc6b4\ub85c\ub4dc &#8211; \u00a0<a href=\"http:\/\/www.python.org\/download\/releases\/2.7.6\/\">http:\/\/www.python.org\/download\/releases\/2.7.6\/<\/a><\/p>\n<p>\ubdf0\ud2f0\ud480 \uc218\ud504 &#8211;\u00a0<a href=\"http:\/\/www.crummy.com\/software\/BeautifulSoup\/#Download\">http:\/\/www.crummy.com\/software\/BeautifulSoup\/#Download<\/a><\/p>\n<p>\ubdf0\ud2f0\ud480\uc218\ud504 \uae30\ucd08 &#8211;\u00a0<a href=\"http:\/\/toors.tistory.com\/entry\/Python-BeautifulSoup%EC%9C%BC%EB%A1%9C-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EA%B8%81%EC%96%B4%EC%98%A4%EA%B8%B0-%ED%8C%A8%ED%84%B4\">http:\/\/toors.tistory.com\/entry\/Python-BeautifulSoup%EC%9C%BC%EB%A1%9C-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EA%B8%81%EC%96%B4%EC%98%A4%EA%B8%B0-%ED%8C%A8%ED%84%B4<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\ud30c\uc774\uc36c\uc740 \uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc774 \ub450 \uac00\uc9c0\ub85c \uc0dd\uac01\ud558\uc2e4 \uc218 \uc788\ub294\ub370\uc694<\/p>\n<p>\uccab\ubc88\uc9f8\ub85c \ud504\ub85c\uadf8\ub7a8\uc774 \ub4e4\uc5b4\uc788\ub294 \ud3f4\ub354\ub610\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac path\uc5d0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub123\uc5b4 \ub450\uace0 import \ud574\uc11c \uc4f0\uc2dc\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub294 \ub9e4\uc6b0 \uac04\ub2e8\ud558\ubbc0\ub85c(\uadf8\ub0e5 \ud504\ub85c\uadf8\ub7a8\ub9cc\ub4e4\ub54c \uac19\uc740 \ud3f4\ub354\uc548\uc5d0 \ub123\uae30\ub9cc \ud558\uba74 \ub418\ub2c8\uae4c!) \uc124\uba85\ud558\uc9c0 \uc54a\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\ub978 \ubc29\ubc95\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58 \ud574\uc11c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.<\/p>\n<p>OS\ud658\uacbd\uc740 \ub9ac\ub205\uc2a4\uc640 \uc708\ub3c4\uc6b0 \ub450 \uac00\uc9c0\ub85c \uc124\uba85\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd9c\ucc98 :\u00a0<a href=\"http:\/\/it.pode.es\/135\">http:\/\/it.pode.es\/135<\/a><\/p>\n<hr \/>\n<p>1.Linux\ud658\uacbd\uc5d0\uc11c \ud30c\uc774\uc36c \uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58\ud558\uae30<\/p>\n<p>\uc774\ub3c4 \ub9e4\uc6b0 \uac04\ub2e8\ud55c \ubc29\ubc95\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub9ac\ub205\uc2a4\uc5d0\uc11c\ub294 apt-get \ub610\ub294 yum \uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc778\uc2a4\ud1a8\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>ex) beautiful soup \uc124\uce58\ud558\uae30<\/p>\n<p>&gt;&gt;&gt;sudo apt-get install python-bs4<\/p>\n<p>\ub610\ud55c easy install\uc774\ub098 pip\ub4f1\uc744 \ud1b5\ud574\ub3c4 \uc124\uce58\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/p>\n<p>ex) beatufiul soup \uc124\uce58\ud558\uae30<\/p>\n<p>&gt;&gt;&gt;easy_install beautifulsoup4<\/p>\n<p>&gt;&gt;&gt;pip install beautifulsoup4<\/p>\n<p>\ub2e4\ub978 \ud55c \uac00\uc9c0 \ubc29\ubc95\uc740 setup.py\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc778\ub370, \uc774\ub294 \uc544\ub798\uc5d0\uc11c \uc124\uba85\ud560 \uc708\ub3c4\uc6b0\ud658\uacbd\uc5d0\uc11c\uc758 \ud30c\uc774\uc36c \uc678\ubd80\ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58 \ubc29\ubc95\uacfc \uac19\uc73c\ubbc0\ub85c \uc544\ub798\uc5d0\uc11c \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<hr \/>\n<p>2.Windows\ud658\uacbd\uc5d0\uc11c \ud30c\uc774\uc36c \uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58\ud558\uae30<\/p>\n<p>\uc774\ub294 \uc57d\uac04\uc758 \uc9c0\uc2dd\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uc5b4\ub824\uc6b4 \ubc29\ubc95\uc740 \uc544\ub2c8\ub2c8 \uac71\uc815\uc548\ud558\uc154\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc77c\ub2e8, \ud30c\uc774\uc36c \uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac \ud30c\uc77c\uc744 \uc555\ucd95\uc744 \ud480\uc5b4 \ub193\uc2b5\ub2c8\ub2e4.<\/p>\n<p>1.\uadf8\ub9ac\uace0 cmd\ucc3d\uc5d0 \ub4e4\uc5b4\uac11\ub2c8\ub2e4.<\/p>\n<p>2.\uadf8\ub2e4\uc74c, \uba85\ub839\uc5b4\ub85c \uadf8 \ud3f4\ub354\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>Tip1. cd \uc8fc\uc18c = \ud3f4\ub354\uc8fc\uc18c\ub85c \uc774\ub3d9<\/p>\n<p>ex) cd D:\\magnet\\nate<\/p>\n<p>\ub294 D\ub4dc\ub77c\uc774\ube0c\uc758 magnet\ud3f4\ub354\uc758 nate\ud3f4\ub354\ub85c \ub4e4\uc5b4\uac00\ub77c\ub294 \ub73b \uc785\ub2c8\ub2e4<\/p>\n<p>Tip2. \ud574\ub2f9 \ud3f4\ub354\ub97c cmd\ucc3d\uc5d0 \ub4dc\ub798\uadf8\ud558\uba74 \ud3f4\ub354\uc8fc\uc18c\uac00 \uc801\ud799\ub2c8\ub2e4<\/p>\n<p>\uc989, cd \ub77c\uace0 \uce5c \ud6c4 cmd\ucc3d\uc73c\ub85c \ud574\ub2f9 \ud3f4\ub354\ub97c \ub4dc\ub798\uadf8\ub97c \ud558\uc5ec \ud3f4\ub354\uc8fc\uc18c\ub97c \uc801\uc73c\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>3.python setup.py install \uc774\ub77c\uace0 \uce58\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>Tip1. setup.py\uac00 \uc5c6\ub294 \uac83\uc740 setup.py\ub97c build\ud574\uc57c \ud558\ub294\ub370, \uc774\uc5d0 \ub300\ud574\uc120 \ub2e4\uc74c\uc5d0 \ub2e4\uc2dc \uc124\uba85\ub4dc\ub9ac\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>beautiful soup \uc124\uce58 (\uc6b0\ubd84\ud22c \ud658\uacbd)<\/b><\/p>\n<div class=\"txc-textbox\">\n<p>$&gt; pip install beautifulsoup4<\/p>\n<\/div>\n<p><b>\uc6f9\ud398\uc774\uc9c0\uc758 GET \ub370\uc774\ud130\u00a0\uc815\ubcf4 \uac00\uc838\uc624\uae30<\/b><\/p>\n<div class=\"txc-textbox\">\n<p>from bs4 import BeautifulSoup<\/p>\n<p>import urllib2<\/p>\n<p>try:<\/p>\n<p>response = urllib2.urlopen(<b>&#8220;\uac00\uc838\uc62c \uc6f9\ud398\uc774\uc9c0 \uc8fc\uc18c&#8221;<\/b>)<\/p>\n<p>page = response.read().decode(&#8216;cp949&#8217;, &#8216;ignore&#8217;) \u00a0<b>#\u00a0\uc778\ucf54\ub529 \ubcc0\ud658\uc774 \ud544\uc694\ud560 \uacbd\uc6b0<\/b><\/p>\n<p>response.close()<\/p>\n<p>except urllib2.HTTPError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<p>except urllib2.URLError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<p>soup = BeautifulSoup(page)<\/p>\n<\/div>\n<p><span style=\"color: #0055ff;\"><b>\uc6f9\ud398\uc774\uc9c0\uc758 GET \ub370\uc774\ud130 \uc815\ubcf4 \uac00\uc838\uc624\uae30[header \ud3ec\ud568]<\/b><\/span><\/p>\n<div class=\"txc-textbox\">\n<p><b><\/b>from bs4 import BeautifulSoup<\/p>\n<p>import urllib2<\/p>\n<p>try:<\/p>\n<p>req = urllib2.Request(<b>&#8220;\uac00\uc838\uc62c \uc6f9\ud398\uc774\uc9c0 \uc8fc\uc18c&#8221;<\/b>)<\/p>\n<p>req.add_header(&#8216;User-Agent&#8217;, &#8216;Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/43.0.2357.124 Safari\/537.36&#8217;)<\/p>\n<p>req.add_header(&#8216;Host&#8217;,\u00a0<b>&#8220;HOST\u00a0\uc8fc\uc18c&#8221;<\/b>)<\/p>\n<p>req.add_header(&#8216;Origin&#8217;,\u00a0<b>&#8220;Origin \uc8fc\uc18c&#8221;<\/b>)<\/p>\n<p>req.add_header(&#8216;Referer&#8217;,\u00a0<b>&#8220;Referer\u00a0\uc8fc\uc18c&#8221;<\/b>)<\/p>\n<p>response = urllib2.urlopen(req)<\/p>\n<p>page = response.read()<\/p>\n<p>soup = BeautifulSoup(page)<br \/>\n<span id=\"callbacknestyujuwontistorycom1694870\"><embed id=\"bootstrapperyujuwontistorycom1694870\" src=\"http:\/\/yujuwon.tistory.com\/plugin\/CallBack_bootstrapperSrc?nil_profile=tistory&amp;nil_type=copied_post\" type=\"application\/x-shockwave-flash\" width=\"1\" height=\"1\"><\/embed><\/span><\/p>\n<p>except urllib2.HTTPError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<p>except urllib2.URLError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<\/div>\n<p><b>\uc6f9\ud398\uc774\uc9c0\uc758 POST \ub370\uc774\ud130 \uc815\ubcf4 \uac00\uc838\uc624\uae30<\/b><\/p>\n<div class=\"txc-textbox\">\n<p>from bs4 import BeautifulSoup<\/p>\n<p>import urllib<\/p>\n<p>import urllib2<\/p>\n<p>user_agent = &#8216;Mozila\/4.0 (compatible; MSIE 5.5; Windows NT)&#8217;<\/p>\n<p>values = {<b>&#8216;post \ub370\uc774\ud130 key&#8217;<\/b> : <b>&#8216;post \ub370\uc774\ud130 \uac12&#8217;<\/b>}<\/p>\n<p>headers = {&#8216;User-Agent&#8217;: user_agent}<\/p>\n<p>data = urllib.urlencode(values)<\/p>\n<p>try:<\/p>\n<p>request = urllib2.Request(<b>&#8220;\uac00\uc838\uc62c \uc6f9\ud398\uc774\uc9c0 \uc8fc\uc18c&#8221;<\/b>, data, headers)<\/p>\n<p>response = urllib2.urlopen(request)<\/p>\n<p>page = response.read().decode(&#8216;cp949&#8217;, &#8216;ignore&#8217;) \u00a0<b>#\u00a0\uc778\ucf54\ub529 \ubcc0\ud658\uc774 \ud544\uc694\ud560 \uacbd\uc6b0<\/b><\/p>\n<p><b>\u00a0 \u00a0<\/b>response.close()<\/p>\n<p>except urllib2.HTTPError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<p>except urllib2.URLError, e:<\/p>\n<p>print e.reason.args[1]<\/p>\n<p>soup = BeautifulSoup(page)<\/p>\n<\/div>\n<p><b>\uac00\uc838\uc628 DOM \uad6c\uc870 Beautifulsoup\ub85c \ud30c\uc2f1\ud558\uae30<\/b><\/p>\n<div class=\"txc-textbox\">\n<p><b># td \ud0dc\uadf8\uc758 class \uba85\uc774 &#8216;test&#8217;\uc778 \ud56d\ubaa9\ub9cc \uac00\uc838\uc640\uc11c \ucd9c\ub825\ud574\ub77c<\/b><\/p>\n<p>elements = soup.findAll(&#8216;td&#8217;, {&#8216;class&#8217;:&#8217;test&#8217;})<\/p>\n<p>for i in elements:<\/p>\n<p>print str(i)<\/p>\n<p><b># img\u00a0\ud0dc\uadf8\uc758 \uc18d\uc131\u00a0\uba85\uc774 &#8216;vspace&#8217;\uc774\uace0 \uac12\uc774 5\uc778 \ud56d\ubaa9\ub9cc \uac00\uc838\uc640\uc11c \ucd9c\ub825\ud574\ub77c<\/b><\/p>\n<p>elements = soup.findAll(&#8216;img&#8217;, attrs={&#8216;vspace&#8217;:&#8217;5&#8242;})<\/p>\n<p>for i in elements:<\/p>\n<p>print str(i)<\/p>\n<p><b># img \ud0dc\uadf8\ub97c \uac00\uc838\uc628 \ub2e4\uc74c onclick \uc548\uc758 \ub0b4\uc6a9\uc744 \ucd9c\ub825\ud574\ub77c<\/b><\/p>\n<p>elements = soup.findAll(&#8216;img&#8217;)<\/p>\n<p>for i in elements:<\/p>\n<p>print str(i[&#8216;onclick&#8217;])<\/p>\n<p><b># img \ud0dc\uadf8\uc758 \ubd80\ubaa8 \ub178\ub4dc\ub97c \uac00\uc838\uc640\ub77c<\/b><\/p>\n<p>elements = soup.findAll(&#8216;img&#8217;)<\/p>\n<p>for i in elements:<\/p>\n<p>parent = i.parent<\/p>\n<p>print str(parent)<\/p>\n<p><b># img\uc640 \ub3d9\uc77c \uc120\uc0c1\uc5d0 \uc788\ub294 \uc774\uc804 \uc790\uc2dd \ub178\ub4dc\ub97c \uac00\uc838\uc640\ub77c<\/b><\/p>\n<p>for i in elements:<\/p>\n<p>sibling = i.previous_silibing<\/p>\n<p>print str(sibling)<\/p>\n<\/div>\n<p><b>XML \uad6c\uc870 Beautifulsoup\ub85c \ud30c\uc2f1\ud558\uae30<\/b><\/p>\n<p>&#8211; XML\ub3c4 DOM \uad6c\uc870 \ud30c\uc2f1\uacfc \ub3d9\uc77c\ud55c \ud615\ud0dc\ub85c \uc9c4\ud589\ub41c\ub2e4.<\/p>\n<p>\ub9cc\uc57d \uc544\ub798\uc640 \uac19\uc740 xml \ud30c\uc77c\uc744 \ud30c\uc2f1\ud558\uace0\uc790 \ud55c\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc9c4\ud589\ud558\uba74 \ub41c\ub2e4.<\/p>\n<div class=\"txc-textbox\">\n<p>&lt;test value1=&#8217;123&#8242; value2=&#8217;345 \/&gt;<\/p>\n<p>&lt;test value1=&#8217;234&#8242; value3=&#8217;456&#8242; \/&gt;<\/p>\n<\/div>\n<div class=\"txc-textbox\">\n<p><b># xml \ub370\uc774\ud130 \uac00\uc838\uc624\ub294 \ubd80\ubd84\uc740 \uae30\uc874\uacfc \ub3d9\uc77c\ud558\ub2e4.<\/b><\/p>\n<p>tests = soup.findAll(&#8216;test&#8217;)<\/p>\n<p>for test in tests:<\/p>\n<p>print test[&#8216;value1&#8217;]<\/p>\n<p>print test[&#8216;value2&#8217;]<\/p>\n<\/div>\n<p><b><u><a class=\"tx-link\" href=\"http:\/\/www.crummy.com\/software\/BeautifulSoup\/bs4\/doc\/\" target=\"_blank\">\ubcf4\ub2e4 \uc790\uc138\ud55c \uc124\uba85\uc740 BeautifulSoup \ud648\ud398\uc774\uc9c0\ub97c \ucc38\uc870\ud558\ub3c4\ub85d \ud558\uc790.<\/a><\/u><\/b><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud30c\uc774\uc36c \ub2e4\uc6b4\ub85c\ub4dc &#8211; \u00a0http:\/\/www.python.org\/download\/releases\/2.7.6\/ \ubdf0\ud2f0\ud480 \uc218\ud504 &#8211;\u00a0http:\/\/www.crummy.com\/software\/BeautifulSoup\/#Download \ubdf0\ud2f0\ud480\uc218\ud504 \uae30\ucd08 &#8211;\u00a0http:\/\/toors.tistory.com\/entry\/Python-BeautifulSoup%EC%9C%BC%EB%A1%9C-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EA%B8%81%EC%96%B4%EC%98%A4%EA%B8%B0-%ED%8C%A8%ED%84%B4 &nbsp; \ud30c\uc774\uc36c\uc740 \uc678\ubd80 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc774 \ub450 \uac00\uc9c0\ub85c \uc0dd\uac01\ud558\uc2e4 \uc218 \uc788\ub294\ub370\uc694 \uccab\ubc88\uc9f8\ub85c \ud504\ub85c\uadf8\ub7a8\uc774 \ub4e4\uc5b4\uc788\ub294 \ud3f4\ub354\ub610\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac path\uc5d0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[46],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1388"}],"collection":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1388"}],"version-history":[{"count":0,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1388\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}