{"id":2167,"date":"2024-06-23T19:07:37","date_gmt":"2024-06-23T10:07:37","guid":{"rendered":"https:\/\/secondlife.lol\/?p=2167"},"modified":"2024-06-23T20:02:54","modified_gmt":"2024-06-23T11:02:54","slug":"wordpress-post-title-url-extraction","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/en\/wordpress-post-title-url-extraction\/","title":{"rendered":"Extracting WordPress Blog Post Title URLs (feat. Python &amp; WordPress)"},"content":{"rendered":"\n<p>\uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8\ub97c \uc6b4\uc601\ud558\ub2e4\ubcf4\uba74 \uc9c0\uae08\uae4c\uc9c0 \uc791\uc131\ud55c \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 URL \ucd94\ucd9c \ud55c\ubc88\ucbe4 \uace0\ubbfc\ud574 \ubcf4\uc2dc\uc9c0 \uc54a\uc73c\uc168\ub098\uc694?<\/p>\n\n\n\n<p>\ub0b4\uac00 \uc5bc\ub9c8\ub098 \uae00\uc744 \uc37c\ub294\uc9c0\ub3c4 \uad81\uae08\ud558\uae30\ub3c4 \ud558\uace0, \ud37c\uba38\ub9c1\ud06c \ub4f1 \ud3ec\uc2a4\ud2b8\ub97c \uc218\uc815\ud558\uac8c \ub418\uba74 \uad6c\uae00 \uc11c\uce58\ucf58\uc194\uacfc \uac19\uc740 \uacf3\uc5d0\uc11c url\uac80\uc0ac \uba54\ub274\ub97c \ud1b5\ud574 \ud3ec\uc2a4\ud2b8 \uc8fc\uc18c\ub97c \ub2e4\uc2dc \ub4f1\ub85d\ub3c4 \ud574\uc57c \ud558\ub2c8\uae4c\uc694.<\/p>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ud30c\uc774\uc36c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc774\uc6a9\ud558\uc5ec <strong>\ud3ec\uc2a4\ud2b8\uc758 \uc81c\ubaa9\uacfc URL\uc744 \uc790\ub3d9\uc73c\ub85c \ucd94\ucd9c<\/strong>\ud558\uc5ec <strong>\uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5<\/strong>\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\ub824\ub4dc\ub9b4\ub824\uace0 \ud574\uc694. \uc544\ub798 \ub0b4\uc6a9\uc744 \ubcf4\uc2dc\uba74\uc11c \ucc9c\ucc9c\ud788 \ub530\ub77c \ud574\ubcf4\uc138\uc694.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">VS code \uc124\uce58 \ubc0f \uc0ac\uc6a9 \uc801\uc751\ud558\uae30<\/h2>\n\n\n\n<p>\uc6b0\uc120, \ud30c\uc774\uc36c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uace0 \uc2e4\ud589\uc744 \uc704\ud574\uc11c VS code\ub97c \uc124\uce58\ub97c \ud558\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/secondlife.lol\/vs-code-install\/\" data-type=\"post\" data-id=\"372\">VS CODE \uc124\uce58 \u2013 \uc708\ub3c4\uc6b0 \uae30\uc900<\/a> \ud3ec\uc2a4\ud2b8\ub97c \ud1b5\ud574\uc11c \ub530\ub77c \ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>VS code \uc0ac\uc6a9\uc774 \ucc98\uc74c\uc774\uc2e0 \ubd84\uc740 \uc0b4\uc9dd \uc801\uc751\uc744 \uc704\ud574 \uc544\ub798\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uc77d\uc5b4\ubcf4\uc2dc\uace0 \ud55c\ubc88\uc529 \uc2e4\ud589\ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-row-layout-id2167_7be246-97 > .kt-row-column-wrap{align-content:start;}:where(.kb-row-layout-id2167_7be246-97 > .kt-row-column-wrap) > .wp-block-kadence-column{justify-content:start;}.kb-row-layout-id2167_7be246-97 > .kt-row-column-wrap{column-gap:var(--global-kb-gap-md, 2rem);row-gap:var(--global-kb-gap-md, 2rem);grid-template-columns:repeat(2, minmax(0, 1fr));}.kb-row-layout-id2167_7be246-97 > .kt-row-layout-overlay{opacity:0.30;}@media all and (max-width: 1024px){.kb-row-layout-id2167_7be246-97 > .kt-row-column-wrap{grid-template-columns:repeat(2, minmax(0, 1fr));}}@media all and (max-width: 767px){.kb-row-layout-id2167_7be246-97 > .kt-row-column-wrap{grid-template-columns:minmax(0, 1fr);}}<\/style><div class=\"kb-row-layout-wrap kb-row-layout-id2167_7be246-97 alignnone wp-block-kadence-rowlayout\"><div class=\"kt-row-column-wrap kt-has-2-columns kt-row-layout-equal kt-tab-layout-inherit kt-mobile-layout-row kt-row-valign-top\">\n<style>.kadence-column2167_c09d1e-41 > .kt-inside-inner-col,.kadence-column2167_c09d1e-41 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column2167_c09d1e-41 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column2167_c09d1e-41 > .kt-inside-inner-col{flex-direction:column;}.kadence-column2167_c09d1e-41 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column2167_c09d1e-41 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column2167_c09d1e-41{position:relative;}@media all and (max-width: 1024px){.kadence-column2167_c09d1e-41 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column2167_c09d1e-41 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column2167_c09d1e-41\"><div class=\"kt-inside-inner-col\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-life-2-0-it-playground wp-block-embed-life-2-0-it-playground\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"ckXUpzLKgN\"><a href=\"https:\/\/secondlife.lol\/python-file-rename-guide\/\">Python(\ud30c\uc774\uc36c)\uc744 \uc774\uc6a9\ud55c \ud30c\uc77c\uba85 \ubcc0\uacbd<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Python(\ud30c\uc774\uc36c)\uc744 \uc774\uc6a9\ud55c \ud30c\uc77c\uba85 \ubcc0\uacbd&#8221; &#8212; Life2.0: IT Playground\" src=\"https:\/\/secondlife.lol\/python-file-rename-guide\/embed\/#?secret=jH8Tu7vlLj#?secret=ckXUpzLKgN\" data-secret=\"ckXUpzLKgN\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div><\/div>\n\n\n<style>.kadence-column2167_1b83c5-13 > .kt-inside-inner-col,.kadence-column2167_1b83c5-13 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column2167_1b83c5-13 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column2167_1b83c5-13 > .kt-inside-inner-col{flex-direction:column;}.kadence-column2167_1b83c5-13 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column2167_1b83c5-13 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column2167_1b83c5-13{position:relative;}@media all and (max-width: 1024px){.kadence-column2167_1b83c5-13 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column2167_1b83c5-13 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column2167_1b83c5-13\"><div class=\"kt-inside-inner-col\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-life-2-0-it-playground wp-block-embed-life-2-0-it-playground\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"bsanilau48\"><a href=\"https:\/\/secondlife.lol\/make-file-extract-filename-change-filename\/\">Python(\ud30c\uc774\uc36c)\uc744 \uc774\uc6a9\ud55c \ud30c\uc77c \uc0dd\uc131<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Python(\ud30c\uc774\uc36c)\uc744 \uc774\uc6a9\ud55c \ud30c\uc77c \uc0dd\uc131&#8221; &#8212; Life2.0: IT Playground\" src=\"https:\/\/secondlife.lol\/make-file-extract-filename-change-filename\/embed\/#?secret=jAAsgt91QU#?secret=bsanilau48\" data-secret=\"bsanilau48\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div><\/div>\n\n<\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\">\ud30c\uc774\uc36c \uc18c\uc2a4\ucf54\ub4dc \ubc0f \uc2e4\ud589\ud558\uae30<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud30c\uc774\uc36c \uc18c\uc2a4\ucf54\ub4dc \uc218\uc815\uc0ac\ud56d<\/h3>\n\n\n\n<p>\uc544\ub798\uc758 \ucf54\ub4dc\ub97c \ubcf5\uc0ac\ud574\uc11c VS code\uc5d0 \ubd99\ud600\ub123\uae30 \ud558\uace0 \uc2e4\ud589\ud558\uae30\ub9cc \ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4. <strong>\ub2e4\ub9cc, \ubc14\ub85c \uc544\ub798 \ubd80\ubd84\uc758 \uc8fc\uc18c(\ubcfc\ub4dc\uccb4)\ub9cc \ubcf8\uc778\uc758 \uac83\uc73c\ub85c \ubc14\uafb8\uba74 \ub429\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p># \uc608\uc2dc \uc0ac\uc6a9 (secondlife.lol)<br>api_endpoint = &#8216;https:\/\/<strong>secondlife.lol<\/strong>\/wp-json\/wp\/v2&#8242;<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport json\nfrom openpyxl import Workbook\nimport time\n\ndef get_all_wordpress_posts(api_endpoint, auth=None):\n    headers = {'Accept': 'application\/json'}\n    if auth:\n        headers&#91;'Authorization'] = auth\n\n    posts = &#91;]\n    page = 1\n    per_page = 10 \n\n    while True:\n        try:\n            response = requests.get(f\"{api_endpoint}\/posts?page={page}&amp;per_page={per_page}\", headers=headers)\n            response.raise_for_status()\n\n            page_posts = json.loads(response.content)\n            if not page_posts:\n                print(f\"\ubaa8\ub4e0 \ud398\uc774\uc9c0\ub97c \ucc98\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4.\")\n                break\n\n            posts.extend(page_posts)\n            page += 1\n            print(f\"\ud398\uc774\uc9c0 {page-1} \ucc98\ub9ac \uc644\ub8cc. \ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8 \uac00\uc838\uc634.\")\n\n            time.sleep(1)  # \uac01 \uc694\uccad \uc0ac\uc774\uc5d0 1\ucd08 \ub300\uae30\n\n        except requests.exceptions.HTTPError as e:\n            if response.status_code == 400 and \"rest_post_invalid_page_number\" in response.text:\n                print(f\"\ud398\uc774\uc9c0 {page}\ub294 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4.\")\n            else:\n                print(f\"HTTP \uc624\ub958 \ubc1c\uc0dd: {e}\")\n                print(f\"\uc751\ub2f5 \ub0b4\uc6a9: {response.text}\")\n            break\n        except Exception as e:\n            print(f\"\uc608\uc678 \ubc1c\uc0dd: {e}\")\n            break\n\n    return posts\n\ndef save_to_excel(posts, filename=\"post_info.xlsx\"):\n    wb = Workbook()\n    ws = wb.active\n    ws.append(&#91;\"Title\", \"URL\"])  # \ud5e4\ub354 \ucd94\uac00\n\n    for post in posts:\n        ws.append(&#91;post&#91;'title']&#91;'rendered'], post&#91;'link']])\n\n    wb.save(filename)\n    print(f\"{filename} \ud30c\uc77c\uc5d0 {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8 \uc815\ubcf4 \uc800\uc7a5 \uc644\ub8cc.\")\n\n# \uc608\uc2dc \uc0ac\uc6a9 (secondlife.lol)\napi_endpoint = 'https:\/\/secondlife.lol\/wp-json\/wp\/v2'\nauth = 'Basic &lt;base64 encoded username:password>'\n\nprint(\"\ud3ec\uc2a4\ud2b8 \uac00\uc838\uc624\uae30 \uc2dc\uc791...\")\nposts = get_all_wordpress_posts(api_endpoint, auth)\nprint(f\"\ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4.\")\n\nif posts:\n    save_to_excel(posts)\nelse:\n    print(\"\uac00\uc838\uc628 \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 URL \ucd94\ucd9c \uc2e4\ud589\uacb0\uacfc<\/h3>\n\n\n\n<p>\uc704 \ucf54\ub4dc\uc5d0\uc11c\ub294 \uc2e4\ud589\ud558\uba74 \ud398\uc774\uc9c0\ub124\uc774\uc158\uc73c\ub85c \uad6c\ubd84\ub41c \ud398\uc774\uc9c0\ub97c \uae30\uc900\uc73c\ub85c \ubc18\ubcf5\ud558\uba74\uc11c \ubaa8\ub4e0 \ud3ec\uc2a4\ud2b8 \uc815\ubcf4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc544\ub798\uc640 \uac19\uc774 \uc21c\ucc28\uc801\uc73c\ub85c \uc9c4\ud589\ub41c \ub0b4\uc6a9\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \ub9c8\uc9c0\ub9c9\uc73c\ub85c post_info.xlsx \ud30c\uc77c\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image2167_a672ec-5a .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image2167_a672ec-5a img.kb-img, .kb-image2167_a672ec-5a .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image2167_a672ec-5a\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"245\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185821-600x245.jpg\" alt=\"\uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 URL \ucd94\ucd9c \uacfc\uc815\uacfc \uacb0\uacfc\" class=\"kb-img wp-image-2175\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185821-600x245.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185821-300x123.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185821.jpg 604w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n<style>.kb-image2167_2ca3c6-09 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image2167_2ca3c6-09 img.kb-img, .kb-image2167_2ca3c6-09 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image2167_2ca3c6-09\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"187\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185858-600x187.jpg\" alt=\"\uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 URL \ucd94\ucd9c \uacb0\uacfc\" class=\"kb-img wp-image-2176\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185858-600x187.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185858-300x94.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/\uc2a4\ud06c\ub9b0\uc0f7-2024-06-23-185858.jpg 622w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n<style>.kb-image2167_e34244-e5 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image2167_e34244-e5 img.kb-img, .kb-image2167_e34244-e5 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image2167_e34244-e5\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"207\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/image-1-7-600x207.jpg\" alt=\"\uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 URL \ucd94\ucd9c \uacb0\uacfc\" class=\"kb-img wp-image-2173\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/image-1-7-600x207.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/image-1-7-300x104.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/image-1-7-768x266.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/image-1-7.jpg 1021w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p>\uc720\uc758\ud560 \uc0ac\ud56d\uc774 \uc788\ub2e4\uba74 \uc18c\uc2a4\ucf54\ub4dc \ud30c\uc77c(post_list_url_r1.2.py)\uc774 \uc788\ub294 \ud3f4\ub354\uc5d0 \ud3ec\uc2a4\ud2b8 \uc815\ubcf4\ud30c\uc77c(post_info.xlsx)\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc6f9\uc5d0\uc11c \uc790\ub8cc\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\ub294 \uac83\ucc98\ub7fc \uad00\uc131\uc801\uc73c\ub85c \ub2e4\uc6b4\ub85c\ub4dc \ud3f4\ub354 \uac19\uc740 \uacf3\uc5d0\uc11c \uc0dd\uc131\ub41c \uacb0\uacfc \ud30c\uc77c\uc744 \ucc3e\uc73c\uc2dc\uba74 \uc548\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac\ud558\uae30<\/h2>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 Python\uc744 \uc0ac\uc6a9\ud558\uc5ec WordPress API\uc640 \uc0c1\ud638\uc791\uc6a9\ud558\uace0, \uc6cc\ub4dc\ud504\ub808\uc2a4 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc81c\ubaa9 \ucd94\ucd9c, URL \ucd94\ucd9c\uc744 \ud1b5\ud574 \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc0c1\uc758 \uacfc\uc815\uc744 \ud1b5\ud574 \uc5ec\ub7ec\ubd84\uc740 \ube14\ub85c\uadf8 \uc6b4\uc601\ud558\uc2e4 \ub54c \uad00\ub9ac\ucc28\uc6d0\uc758 \uc870\uadf8\ub9c8\ud55c \ud234\uc744 \ud655\ubcf4\ud588\ub2e4\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc774 \ud3ec\uc2a4\ud2b8\ub97c \uae30\ubc18\uc73c\ub85c \ub2e4\uc74c\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 \uad6c\uae00 \uc11c\uce58\ucf58\uc194\uacfc \uac19\uc740 \uacf3\uc5d0 \uc790\ub3d9\uc73c\ub85c \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 URL\uc744 \ub4f1\ub85d\ud558\ub294 \ubc29\ubc95\uc744 \uacf5\uc720\ud574\ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.(\ubcf8 \ud3ec\uc2a4\ud2b8\uc5d0 \ub0b4\uc6a9\uc744 \ub2f4\uc544\ubcf4\ub824\uace0 \ud2b8\ub77c\uc774\ub97c \ud574\ubcf4\uc558\ub294\ub370 \uc26c\uc6b4 \uc791\uc5c5\uc774 \uc544\ub2cc\uac70 \uac19\uc2b5\ub2c8\ub2e4.)<\/p>\n\n\n\n<p>secondlife.lol\uacfc \ud568\uaed8 \ub354\uc6b1 \uc2a4\ub9c8\ud2b8\ud55c \ube14\ub85c\uae45 \ud558\uc2dc\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p><kbd>\ucc38\uace0\ub85c, <a href=\"https:\/\/wordpress.org\/plugins\/export-all-urls\/\" data-type=\"link\" data-id=\"https:\/\/wordpress.org\/plugins\/export-all-urls\/\" target=\"_blank\" rel=\"noopener\">Export All URLs<\/a>\uc774\ub77c\ub294 \ud50c\ub7ec\uadf8\uc778\uc774 \uc788\uc5b4\uc11c \uc774\uac78 \uc0ac\uc6a9\ud558\uc154\ub3c4 \ub420 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/kbd><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#\uc18c\uc2a4\ucf54\ub4dc \ud574\uc11d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uc18c\uc2a4\ucf54\ub4dc \ubc0f \uc8fc\uc694 \ucf54\uba58\ud2b8<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\nimport json\nfrom openpyxl import Workbook\nimport time\n\ndef get_all_wordpress_posts(api_endpoint, auth=None):\n    \"\"\"\ud398\uc774\uc9c0\ub124\uc774\uc158\uc744 \ucc98\ub9ac\ud558\uc5ec \ubaa8\ub4e0 \uc6cc\ub4dc\ud504\ub808\uc2a4 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc624\ub294 \ud568\uc218\"\"\"\n\n    # API \uc694\uccad \uc2dc \ud544\uc694\ud55c \ud5e4\ub354 \uc124\uc815\n    headers = {'Accept': 'application\/json'}\n    if auth:\n        headers&#91;'Authorization'] = auth\n\n    posts = &#91;]  # \ubaa8\ub4e0 \ud3ec\uc2a4\ud2b8\ub97c \uc800\uc7a5\ud560 \ub9ac\uc2a4\ud2b8\n    page = 1  # \ucd08\uae30 \ud398\uc774\uc9c0 \ubc88\ud638\n    per_page = 10  # \ud55c \ubc88\uc5d0 \uac00\uc838\uc62c \ud3ec\uc2a4\ud2b8 \uc218\ub97c 10\uc73c\ub85c \uc124\uc815\n\n    while True:\n        try:\n            # API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 \uc694\uccad\uc744 \ubcf4\ub0b4\uc11c \ud398\uc774\uc9c0\ubcc4 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc634\n            response = requests.get(f\"{api_endpoint}\/posts?page={page}&amp;per_page={per_page}\", headers=headers)\n            response.raise_for_status()  # \uc694\uccad\uc774 \uc131\uacf5\ud558\uc9c0 \uc54a\uc73c\uba74 \uc608\uc678 \ubc1c\uc0dd\n\n            # \uc751\ub2f5 \ub370\uc774\ud130\ub97c JSON \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\n            page_posts = json.loads(response.content)\n            if not page_posts:\n                break  # \ub354 \uc774\uc0c1 \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc73c\uba74 \ubc18\ubcf5\ubb38 \uc885\ub8cc\n\n            # \uac00\uc838\uc628 \ud3ec\uc2a4\ud2b8\ub97c \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\n            posts.extend(page_posts)\n            page += 1  # \ub2e4\uc74c \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\n            print(f\"\ud398\uc774\uc9c0 {page-1} \ucc98\ub9ac \uc644\ub8cc. \ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8 \uac00\uc838\uc634.\")\n\n            time.sleep(1)  # \uac01 \uc694\uccad \uc0ac\uc774\uc5d0 1\ucd08 \ub300\uae30 (\uc11c\ubc84\uc5d0 \ubd80\ub2f4\uc744 \uc904\uc774\uae30 \uc704\ud568)\n\n        except requests.exceptions.HTTPError as e:\n            # HTTP \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c\uc758 \ucc98\ub9ac\n            print(f\"HTTP \uc624\ub958 \ubc1c\uc0dd: {e}\")\n            print(f\"\uc751\ub2f5 \ub0b4\uc6a9: {response.text}\")\n            break\n        except Exception as e:\n            # \uae30\ud0c0 \uc608\uc678 \ubc1c\uc0dd \uc2dc\uc758 \ucc98\ub9ac\n            print(f\"\uc608\uc678 \ubc1c\uc0dd: {e}\")\n            break\n\n    return posts  # \ubaa8\ub4e0 \ud3ec\uc2a4\ud2b8 \ubc18\ud658\n\ndef save_to_excel(posts, filename=\"post_info.xlsx\"):\n    \"\"\"\ud3ec\uc2a4\ud2b8 \uc81c\ubaa9\uacfc URL\uc744 \uc5d1\uc140 \ud30c\uc77c\uc5d0 \uc800\uc7a5\ud558\ub294 \ud568\uc218\"\"\"\n\n    wb = Workbook()  # \uc0c8 \uc5d1\uc140 \uc6cc\ud06c\ubd81 \uc0dd\uc131\n    ws = wb.active  # \ud65c\uc131 \uc6cc\ud06c\uc2dc\ud2b8 \uc120\ud0dd\n    ws.append(&#91;\"Title\", \"URL\"])  # \uccab \ubc88\uc9f8 \ud589\uc5d0 \ud5e4\ub354 \ucd94\uac00\n\n    for post in posts:\n        # \uac01 \ud3ec\uc2a4\ud2b8\uc758 \uc81c\ubaa9\uacfc URL\uc744 \uc5d1\uc140 \ud30c\uc77c\uc5d0 \ucd94\uac00\n        ws.append(&#91;post&#91;'title']&#91;'rendered'], post&#91;'link']])\n\n    wb.save(filename)  # \uc5d1\uc140 \ud30c\uc77c \uc800\uc7a5\n    print(f\"{filename} \ud30c\uc77c\uc5d0 {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8 \uc815\ubcf4 \uc800\uc7a5 \uc644\ub8cc.\")\n\n# \uc608\uc2dc \uc0ac\uc6a9 (secondlife.lol)\napi_endpoint = 'https:\/\/secondlife.lol\/wp-json\/wp\/v2'  # WordPress API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\nauth = 'Basic &lt;base64 encoded username:password&gt;'  # \ud544\uc694\ud55c \uacbd\uc6b0 \uc778\uc99d \uc815\ubcf4 \ucd94\uac00 (Base64\ub85c \uc778\ucf54\ub529\ub41c \uc0ac\uc6a9\uc790\uba85:\ube44\ubc00\ubc88\ud638)\n\nprint(\"\ud3ec\uc2a4\ud2b8 \uac00\uc838\uc624\uae30 \uc2dc\uc791...\")\nposts = get_all_wordpress_posts(api_endpoint, auth)  # \ud3ec\uc2a4\ud2b8 \uac00\uc838\uc624\uae30 \ud568\uc218 \ud638\ucd9c\nprint(f\"\ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4.\")\n\nif posts:\n    save_to_excel(posts)  # \ud3ec\uc2a4\ud2b8\uac00 \uc788\uc73c\uba74 \uc5d1\uc140 \ud30c\uc77c\uc5d0 \uc800\uc7a5\nelse:\n    print(\"\uac00\uc838\uc628 \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\")  # \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc73c\uba74 \uba54\uc2dc\uc9c0 \ucd9c\ub825<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc0c1\uc138 \uc8fc\uc11d \uc124\uba85<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ubaa8\ub4c8 \uc784\ud3ec\ud2b8<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>requests<\/code>: HTTP \uc694\uccad\uc744 \ubcf4\ub0b4\uae30 \uc704\ud55c \ubaa8\ub4c8.<\/li>\n\n\n\n<li><code>json<\/code>: JSON \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \ubaa8\ub4c8.<\/li>\n\n\n\n<li><code>openpyxl<\/code>: \uc5d1\uc140 \ud30c\uc77c\uc744 \ub2e4\ub8e8\uae30 \uc704\ud55c \ubaa8\ub4c8.<\/li>\n\n\n\n<li><code>time<\/code>: \uc2dc\uac04 \uad00\ub828 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \ubaa8\ub4c8.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>get_all_wordpress_posts \ud568\uc218<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>api_endpoint<\/code>\uc640 <code>auth<\/code>\ub97c \uc778\uc790\ub85c \ubc1b\uc544 WordPress API\ub97c \ud1b5\ud574 \ubaa8\ub4e0 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc624\ub294 \ud568\uc218.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud5e4\ub354 \uc124\uc815<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>headers = {'Accept': 'application\/json'}<\/code>: JSON \ud615\uc2dd\uc73c\ub85c \uc751\ub2f5\uc744 \ubc1b\uae30 \uc704\ud55c \ud5e4\ub354 \uc124\uc815.<\/li>\n\n\n\n<li><code>if auth:<\/code>: \uc778\uc99d \uc815\ubcf4\uac00 \uc788\uc73c\uba74 \ud5e4\ub354\uc5d0 \ucd94\uac00.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud3ec\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \ub9ac\uc2a4\ud2b8\uc640 \ud398\uc774\uc9c0 \uc124\uc815<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>posts = []<\/code>: \ud3ec\uc2a4\ud2b8\ub97c \uc800\uc7a5\ud560 \ube48 \ub9ac\uc2a4\ud2b8.<\/li>\n\n\n\n<li><code>page = 1<\/code>: \ucd08\uae30 \ud398\uc774\uc9c0 \ubc88\ud638.<\/li>\n\n\n\n<li><code>per_page = 10<\/code>: \ud55c \ubc88\uc5d0 \uac00\uc838\uc62c \ud3ec\uc2a4\ud2b8 \uc218.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ubc18\ubcf5\ubb38\uc744 \ud1b5\ud55c API \uc694\uccad<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>while True:<\/code>: \ubb34\ud55c \ub8e8\ud504\ub85c \ud398\uc774\uc9c0\ubcc4\ub85c \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc634.<\/li>\n\n\n\n<li><code>response = requests.get(...)<\/code>: API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 \uc694\uccad\uc744 \ubcf4\ub0c4.<\/li>\n\n\n\n<li><code>response.raise_for_status()<\/code>: \uc694\uccad\uc774 \uc2e4\ud328\ud558\uba74 \uc608\uc678\ub97c \ubc1c\uc0dd\uc2dc\ud0b4.<\/li>\n\n\n\n<li><code>page_posts = json.loads(response.content)<\/code>: \uc751\ub2f5 \ub370\uc774\ud130\ub97c JSON \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658.<\/li>\n\n\n\n<li><code>if not page_posts:<\/code>: \ub354 \uc774\uc0c1 \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc73c\uba74 \ubc18\ubcf5\ubb38 \uc885\ub8cc.<\/li>\n\n\n\n<li><code>posts.extend(page_posts)<\/code>: \uac00\uc838\uc628 \ud3ec\uc2a4\ud2b8\ub97c \ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00.<\/li>\n\n\n\n<li><code>page += 1<\/code>: \ub2e4\uc74c \ud398\uc774\uc9c0\ub85c \uc774\ub3d9.<\/li>\n\n\n\n<li><code>time.sleep(1)<\/code>: \uac01 \uc694\uccad \uc0ac\uc774\uc5d0 1\ucd08 \ub300\uae30.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc608\uc678 \ucc98\ub9ac<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>except requests.exceptions.HTTPError as e:<\/code>: HTTP \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c\uc758 \ucc98\ub9ac.<\/li>\n\n\n\n<li><code>except Exception as e:<\/code>: \uae30\ud0c0 \uc608\uc678 \ubc1c\uc0dd \uc2dc\uc758 \ucc98\ub9ac.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud3ec\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \ubc18\ud658<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>return posts<\/code>: \ubaa8\ub4e0 \ud3ec\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \ubc18\ud658.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>save_to_excel \ud568\uc218<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>posts<\/code>\uc640 <code>filename<\/code>\uc744 \uc778\uc790\ub85c \ubc1b\uc544 \ud3ec\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \ud568\uc218.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc5d1\uc140 \ud30c\uc77c \uc0dd\uc131 \ubc0f \ub370\uc774\ud130 \uc800\uc7a5<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>wb = Workbook()<\/code>: \uc0c8 \uc5d1\uc140 \uc6cc\ud06c\ubd81 \uc0dd\uc131.<\/li>\n\n\n\n<li><code>ws = wb.active<\/code>: \ud65c\uc131 \uc6cc\ud06c\uc2dc\ud2b8 \uc120\ud0dd.<\/li>\n\n\n\n<li><code>ws.append([\"Title\", \"URL\"])<\/code>: \uccab \ubc88\uc9f8 \ud589\uc5d0 \ud5e4\ub354 \ucd94\uac00.<\/li>\n\n\n\n<li><code>for post in posts:<\/code>: \uac01 \ud3ec\uc2a4\ud2b8\uc758 \uc81c\ubaa9\uacfc URL\uc744 \uc5d1\uc140 \ud30c\uc77c\uc5d0 \ucd94\uac00.<\/li>\n\n\n\n<li><code>wb.save(filename)<\/code>: \uc5d1\uc140 \ud30c\uc77c \uc800\uc7a5.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uba54\uc778 \ucf54\ub4dc<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>api_endpoint = 'https:\/\/secondlife.lol\/wp-json\/wp\/v2'<\/code>: WordPress API \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \uc124\uc815.<\/li>\n\n\n\n<li><code>auth = 'Basic &lt;base64 encoded username:password&gt;'<\/code>: \ud544\uc694\ud55c \uacbd\uc6b0 \uc778\uc99d \uc815\ubcf4 \ucd94\uac00.<\/li>\n\n\n\n<li><code>print(\"\ud3ec\uc2a4\ud2b8 \uac00\uc838\uc624\uae30 \uc2dc\uc791...\")<\/code>: \uc2dc\uc791 \uba54\uc2dc\uc9c0 \ucd9c\ub825.<\/li>\n\n\n\n<li><code>posts = get_all_wordpress_posts(api_endpoint, auth)<\/code>: \ud3ec\uc2a4\ud2b8 \uac00\uc838\uc624\uae30 \ud568\uc218 \ud638\ucd9c.<\/li>\n\n\n\n<li><code>print(f\"\ucd1d {len(posts)}\uac1c\uc758 \ud3ec\uc2a4\ud2b8\ub97c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4.\")<\/code>: \ud3ec\uc2a4\ud2b8 \uac1c\uc218 \ucd9c\ub825.<\/li>\n\n\n\n<li><code>if posts: save_to_excel(posts)<\/code>: \ud3ec\uc2a4\ud2b8\uac00 \uc788\uc73c\uba74 \uc5d1\uc140 \ud30c\uc77c\uc5d0 \uc800\uc7a5.<\/li>\n\n\n\n<li><code>else: print(\"\uac00\uc838\uc628 \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\")<\/code>: \ud3ec\uc2a4\ud2b8\uac00 \uc5c6\uc73c\uba74 \uba54\uc2dc\uc9c0 \ucd9c\ub825.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>If you're running a WordPress blog, you've probably wondered how to extract the URLs of the titles of your posts...<\/p>","protected":false},"author":3,"featured_media":2182,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[157,34,158,156,49,155],"class_list":["post-2167","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-coding","tag-api","tag-python","tag-wordpress","tag-156","tag-49","tag-155"],"taxonomy_info":{"category":[{"value":3,"label":"\ud30c\uc774\uc36c(Python)"}],"post_tag":[{"value":157,"label":"API"},{"value":34,"label":"python"},{"value":158,"label":"WordPress"},{"value":156,"label":"\ub370\uc774\ud130 \ucd94\ucd9c"},{"value":49,"label":"\ube14\ub85c\uadf8"},{"value":155,"label":"\uc5d1\uc140"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2024\/06\/post_title_url_extract-600x600.jpg",600,600,true],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/en\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"\ud30c\uc774\uc36c(Python)","slug":"python-coding","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":20,"count":116,"filter":"raw","cat_ID":3,"category_count":116,"category_description":"","cat_name":"\ud30c\uc774\uc36c(Python)","category_nicename":"python-coding","category_parent":20}],"tag_info":[{"term_id":157,"name":"API","slug":"api","term_group":0,"term_taxonomy_id":157,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":34,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":34,"taxonomy":"post_tag","description":"","parent":0,"count":21,"filter":"raw"},{"term_id":158,"name":"WordPress","slug":"wordpress","term_group":0,"term_taxonomy_id":158,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":156,"name":"\ub370\uc774\ud130 \ucd94\ucd9c","slug":"%eb%8d%b0%ec%9d%b4%ed%84%b0-%ec%b6%94%ec%b6%9c","term_group":0,"term_taxonomy_id":156,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":49,"name":"\ube14\ub85c\uadf8","slug":"%eb%b8%94%eb%a1%9c%ea%b7%b8","term_group":0,"term_taxonomy_id":49,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":155,"name":"\uc5d1\uc140","slug":"%ec%97%91%ec%85%80","term_group":0,"term_taxonomy_id":155,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/posts\/2167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/comments?post=2167"}],"version-history":[{"count":11,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/posts\/2167\/revisions"}],"predecessor-version":[{"id":2193,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/posts\/2167\/revisions\/2193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/media\/2182"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/media?parent=2167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/categories?post=2167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/en\/wp-json\/wp\/v2\/tags?post=2167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}