[{"data":1,"prerenderedAt":1574},["ShallowReactive",2],{"doc-\u002Fexamples\u002Fpython-url-checker-script-example":3},{"id":4,"title":5,"body":6,"description":1567,"extension":1568,"meta":1569,"navigation":72,"path":1570,"seo":1571,"stem":1572,"__hash__":1573},"content\u002Fexamples\u002Fpython-url-checker-script-example.md","Python URL Checker Script Example",{"type":7,"value":8,"toc":1542},"minimark",[9,13,17,20,36,39,44,275,278,282,285,303,306,310,313,338,346,350,356,359,377,380,400,403,417,424,428,431,589,594,639,642,645,649,666,669,672,679,711,717,720,733,736,743,747,771,778,781,789,793,837,840,854,862,869,873,876,879,909,912,972,975,981,984,987,997,1001,1004,1007,1024,1027,1294,1297,1311,1319,1323,1326,1351,1354,1371,1374,1397,1400,1444,1448,1451,1454,1468,1471,1475,1479,1482,1486,1492,1496,1499,1503,1506,1510,1538],[10,11,5],"h1",{"id":12},"python-url-checker-script-example",[14,15,16],"p",{},"This example shows a simple Python script that checks whether URLs respond successfully.",[14,18,19],{},"You will learn how to:",[21,22,23,27,30,33],"ul",{},[24,25,26],"li",{},"check one or more URLs from Python",[24,28,29],{},"send an HTTP request to each URL",[24,31,32],{},"read the response status code",[24,34,35],{},"handle errors without stopping the whole script",[14,37,38],{},"This is a practical beginner-friendly example. The goal is to understand the script, run it, and then make small improvements.",[40,41,43],"h2",{"id":42},"quick-example","Quick example",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import requests\n\nurls = [\n    \"https:\u002F\u002Fwww.python.org\",\n    \"https:\u002F\u002Fexample.com\",\n    \"https:\u002F\u002Fthis-url-does-not-exist-12345.com\"\n]\n\nfor url in urls:\n    try:\n        response = requests.get(url, timeout=5)\n        print(url, response.status_code)\n    except requests.RequestException as e:\n        print(url, \"ERROR:\", e)\n","python","",[52,53,54,67,74,88,105,117,128,134,139,157,165,205,229,250],"code",{"__ignoreMap":50},[55,56,59,63],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sVHd0","import",[55,64,66],{"class":65},"su5hD"," requests\n",[55,68,70],{"class":57,"line":69},2,[55,71,73],{"emptyLinePlaceholder":72},true,"\n",[55,75,77,80,84],{"class":57,"line":76},3,[55,78,79],{"class":65},"urls ",[55,81,83],{"class":82},"smGrS","=",[55,85,87],{"class":86},"sP7_E"," [\n",[55,89,91,95,99,102],{"class":57,"line":90},4,[55,92,94],{"class":93},"sjJ54","    \"",[55,96,98],{"class":97},"s_sjI","https:\u002F\u002Fwww.python.org",[55,100,101],{"class":93},"\"",[55,103,104],{"class":86},",\n",[55,106,108,110,113,115],{"class":57,"line":107},5,[55,109,94],{"class":93},[55,111,112],{"class":97},"https:\u002F\u002Fexample.com",[55,114,101],{"class":93},[55,116,104],{"class":86},[55,118,120,122,125],{"class":57,"line":119},6,[55,121,94],{"class":93},[55,123,124],{"class":97},"https:\u002F\u002Fthis-url-does-not-exist-12345.com",[55,126,127],{"class":93},"\"\n",[55,129,131],{"class":57,"line":130},7,[55,132,133],{"class":86},"]\n",[55,135,137],{"class":57,"line":136},8,[55,138,73],{"emptyLinePlaceholder":72},[55,140,142,145,148,151,154],{"class":57,"line":141},9,[55,143,144],{"class":61},"for",[55,146,147],{"class":65}," url ",[55,149,150],{"class":61},"in",[55,152,153],{"class":65}," urls",[55,155,156],{"class":86},":\n",[55,158,160,163],{"class":57,"line":159},10,[55,161,162],{"class":61},"    try",[55,164,156],{"class":86},[55,166,168,171,173,176,179,183,186,189,192,196,198,202],{"class":57,"line":167},11,[55,169,170],{"class":65},"        response ",[55,172,83],{"class":82},[55,174,175],{"class":65}," requests",[55,177,178],{"class":86},".",[55,180,182],{"class":181},"slqww","get",[55,184,185],{"class":86},"(",[55,187,188],{"class":181},"url",[55,190,191],{"class":86},",",[55,193,195],{"class":194},"s99_P"," timeout",[55,197,83],{"class":82},[55,199,201],{"class":200},"srdBf","5",[55,203,204],{"class":86},")\n",[55,206,208,212,214,216,218,221,223,227],{"class":57,"line":207},12,[55,209,211],{"class":210},"sptTA","        print",[55,213,185],{"class":86},[55,215,188],{"class":181},[55,217,191],{"class":86},[55,219,220],{"class":181}," response",[55,222,178],{"class":86},[55,224,226],{"class":225},"skxfh","status_code",[55,228,204],{"class":86},[55,230,232,235,237,239,242,245,248],{"class":57,"line":231},13,[55,233,234],{"class":61},"    except",[55,236,175],{"class":65},[55,238,178],{"class":86},[55,240,241],{"class":225},"RequestException",[55,243,244],{"class":61}," as",[55,246,247],{"class":65}," e",[55,249,156],{"class":86},[55,251,253,255,257,259,261,264,267,269,271,273],{"class":57,"line":252},14,[55,254,211],{"class":210},[55,256,185],{"class":86},[55,258,188],{"class":181},[55,260,191],{"class":86},[55,262,263],{"class":93}," \"",[55,265,266],{"class":97},"ERROR:",[55,268,101],{"class":93},[55,270,191],{"class":86},[55,272,247],{"class":181},[55,274,204],{"class":86},[14,276,277],{},"This is the fastest working example. It checks each URL and prints either the status code or an error.",[40,279,281],{"id":280},"what-this-example-does","What this example does",[14,283,284],{},"This script:",[21,286,287,290,297,300],{},[24,288,289],{},"checks one or more URLs from Python",[24,291,292,293,296],{},"sends an HTTP ",[52,294,295],{},"GET"," request to each URL",[24,298,299],{},"shows the response status code",[24,301,302],{},"handles connection errors without stopping the whole script",[14,304,305],{},"A URL checker like this is useful when you want to test links, verify website pages, or learn how Python works with web requests.",[40,307,309],{"id":308},"what-you-need-before-running-it","What you need before running it",[14,311,312],{},"Before you run the script, make sure you have:",[21,314,315,318,321,328],{},[24,316,317],{},"Python installed",[24,319,320],{},"an internet connection",[24,322,323,324,327],{},"the ",[52,325,326],{},"requests"," package installed",[24,329,330,331,334,335],{},"a basic understanding of loops and ",[52,332,333],{},"try","-",[52,336,337],{},"except",[14,339,340,341,178],{},"If you are new to error handling, see ",[342,343,345],"a",{"href":344},"\u002Flearn\u002Fusing-try-except-else-and-finally-in-python\u002F","using try-except, else, and finally in Python",[40,347,349],{"id":348},"install-the-requests-package","Install the requests package",[14,351,352,353,355],{},"This example uses the ",[52,354,326],{}," package.",[14,357,358],{},"Install it with:",[45,360,364],{"className":361,"code":362,"language":363,"meta":50,"style":50},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pip install requests\n","bash",[52,365,366],{"__ignoreMap":50},[55,367,368,372,375],{"class":57,"line":58},[55,369,371],{"class":370},"sbgvK","pip",[55,373,374],{"class":97}," install",[55,376,66],{"class":97},[14,378,379],{},"Why this matters:",[21,381,382,387,394],{},[24,383,384,386],{},[52,385,326],{}," is not part of Python's basic built-in functions",[24,388,389,390,393],{},"if it is missing, ",[52,391,392],{},"import requests"," will fail",[24,395,396,397],{},"you may see a ",[52,398,399],{},"ModuleNotFoundError",[14,401,402],{},"You can check whether it is installed with:",[45,404,406],{"className":361,"code":405,"language":363,"meta":50,"style":50},"pip show requests\n",[52,407,408],{"__ignoreMap":50},[55,409,410,412,415],{"class":57,"line":58},[55,411,371],{"class":370},[55,413,414],{"class":97}," show",[55,416,66],{"class":97},[14,418,419,420,178],{},"If you get an import error, see ",[342,421,423],{"href":422},"\u002Ferrors\u002Fmodulenotfounderror-no-module-named-x-fix\u002F","how to fix ModuleNotFoundError: No module named X",[40,425,427],{"id":426},"how-the-script-works","How the script works",[14,429,430],{},"Here is the same script again:",[45,432,433],{"className":47,"code":48,"language":49,"meta":50,"style":50},[52,434,435,441,445,453,463,473,481,485,489,501,507,533,551,567],{"__ignoreMap":50},[55,436,437,439],{"class":57,"line":58},[55,438,62],{"class":61},[55,440,66],{"class":65},[55,442,443],{"class":57,"line":69},[55,444,73],{"emptyLinePlaceholder":72},[55,446,447,449,451],{"class":57,"line":76},[55,448,79],{"class":65},[55,450,83],{"class":82},[55,452,87],{"class":86},[55,454,455,457,459,461],{"class":57,"line":90},[55,456,94],{"class":93},[55,458,98],{"class":97},[55,460,101],{"class":93},[55,462,104],{"class":86},[55,464,465,467,469,471],{"class":57,"line":107},[55,466,94],{"class":93},[55,468,112],{"class":97},[55,470,101],{"class":93},[55,472,104],{"class":86},[55,474,475,477,479],{"class":57,"line":119},[55,476,94],{"class":93},[55,478,124],{"class":97},[55,480,127],{"class":93},[55,482,483],{"class":57,"line":130},[55,484,133],{"class":86},[55,486,487],{"class":57,"line":136},[55,488,73],{"emptyLinePlaceholder":72},[55,490,491,493,495,497,499],{"class":57,"line":141},[55,492,144],{"class":61},[55,494,147],{"class":65},[55,496,150],{"class":61},[55,498,153],{"class":65},[55,500,156],{"class":86},[55,502,503,505],{"class":57,"line":159},[55,504,162],{"class":61},[55,506,156],{"class":86},[55,508,509,511,513,515,517,519,521,523,525,527,529,531],{"class":57,"line":167},[55,510,170],{"class":65},[55,512,83],{"class":82},[55,514,175],{"class":65},[55,516,178],{"class":86},[55,518,182],{"class":181},[55,520,185],{"class":86},[55,522,188],{"class":181},[55,524,191],{"class":86},[55,526,195],{"class":194},[55,528,83],{"class":82},[55,530,201],{"class":200},[55,532,204],{"class":86},[55,534,535,537,539,541,543,545,547,549],{"class":57,"line":207},[55,536,211],{"class":210},[55,538,185],{"class":86},[55,540,188],{"class":181},[55,542,191],{"class":86},[55,544,220],{"class":181},[55,546,178],{"class":86},[55,548,226],{"class":225},[55,550,204],{"class":86},[55,552,553,555,557,559,561,563,565],{"class":57,"line":231},[55,554,234],{"class":61},[55,556,175],{"class":65},[55,558,178],{"class":86},[55,560,241],{"class":225},[55,562,244],{"class":61},[55,564,247],{"class":65},[55,566,156],{"class":86},[55,568,569,571,573,575,577,579,581,583,585,587],{"class":57,"line":252},[55,570,211],{"class":210},[55,572,185],{"class":86},[55,574,188],{"class":181},[55,576,191],{"class":86},[55,578,263],{"class":93},[55,580,266],{"class":97},[55,582,101],{"class":93},[55,584,191],{"class":86},[55,586,247],{"class":181},[55,588,204],{"class":86},[590,591,593],"h3",{"id":592},"_1-create-a-list-of-urls","1. Create a list of URLs",[45,595,597],{"className":47,"code":596,"language":49,"meta":50,"style":50},"urls = [\n    \"https:\u002F\u002Fwww.python.org\",\n    \"https:\u002F\u002Fexample.com\",\n    \"https:\u002F\u002Fthis-url-does-not-exist-12345.com\"\n]\n",[52,598,599,607,617,627,635],{"__ignoreMap":50},[55,600,601,603,605],{"class":57,"line":58},[55,602,79],{"class":65},[55,604,83],{"class":82},[55,606,87],{"class":86},[55,608,609,611,613,615],{"class":57,"line":69},[55,610,94],{"class":93},[55,612,98],{"class":97},[55,614,101],{"class":93},[55,616,104],{"class":86},[55,618,619,621,623,625],{"class":57,"line":76},[55,620,94],{"class":93},[55,622,112],{"class":97},[55,624,101],{"class":93},[55,626,104],{"class":86},[55,628,629,631,633],{"class":57,"line":90},[55,630,94],{"class":93},[55,632,124],{"class":97},[55,634,127],{"class":93},[55,636,637],{"class":57,"line":107},[55,638,133],{"class":86},[14,640,641],{},"This list stores the URLs you want to check.",[14,643,644],{},"Each item is a string. Later, the loop will process them one by one.",[590,646,648],{"id":647},"_2-loop-through-the-list","2. Loop through the list",[45,650,652],{"className":47,"code":651,"language":49,"meta":50,"style":50},"for url in urls:\n",[52,653,654],{"__ignoreMap":50},[55,655,656,658,660,662,664],{"class":57,"line":58},[55,657,144],{"class":61},[55,659,147],{"class":65},[55,661,150],{"class":61},[55,663,153],{"class":65},[55,665,156],{"class":86},[14,667,668],{},"This line goes through the list one URL at a time.",[14,670,671],{},"If the list has 3 URLs, the loop runs 3 times.",[590,673,675,676],{"id":674},"_3-send-a-request-with-requestsget","3. Send a request with ",[52,677,678],{},"requests.get()",[45,680,682],{"className":47,"code":681,"language":49,"meta":50,"style":50},"response = requests.get(url, timeout=5)\n",[52,683,684],{"__ignoreMap":50},[55,685,686,689,691,693,695,697,699,701,703,705,707,709],{"class":57,"line":58},[55,687,688],{"class":65},"response ",[55,690,83],{"class":82},[55,692,175],{"class":65},[55,694,178],{"class":86},[55,696,182],{"class":181},[55,698,185],{"class":86},[55,700,188],{"class":181},[55,702,191],{"class":86},[55,704,195],{"class":194},[55,706,83],{"class":82},[55,708,201],{"class":200},[55,710,204],{"class":86},[14,712,713,714,716],{},"This sends an HTTP ",[52,715,295],{}," request to the current URL.",[14,718,719],{},"Important parts:",[21,721,722,727],{},[24,723,724,726],{},[52,725,188],{}," is the web address to check",[24,728,729,732],{},[52,730,731],{},"timeout=5"," means \"stop waiting after 5 seconds\"",[14,734,735],{},"Without a timeout, your script might wait too long if a site is slow or not responding.",[14,737,738,739,178],{},"If you want to learn more about making web requests, see ",[342,740,742],{"href":741},"\u002Fhow-to\u002Fhow-to-make-an-api-request-in-python\u002F","how to make an API request in Python",[590,744,746],{"id":745},"_4-read-the-status-code","4. Read the status code",[45,748,750],{"className":47,"code":749,"language":49,"meta":50,"style":50},"print(url, response.status_code)\n",[52,751,752],{"__ignoreMap":50},[55,753,754,757,759,761,763,765,767,769],{"class":57,"line":58},[55,755,756],{"class":210},"print",[55,758,185],{"class":86},[55,760,188],{"class":181},[55,762,191],{"class":86},[55,764,220],{"class":181},[55,766,178],{"class":86},[55,768,226],{"class":225},[55,770,204],{"class":86},[14,772,773,774,777],{},"The ",[52,775,776],{},"response.status_code"," value tells you how the server responded.",[14,779,780],{},"Example output:",[45,782,787],{"className":783,"code":785,"language":786,"meta":50},[784],"language-text","https:\u002F\u002Fwww.python.org 200\nhttps:\u002F\u002Fexample.com 200\nhttps:\u002F\u002Fthis-url-does-not-exist-12345.com ERROR: HTTPSConnectionPool(...)\n","text",[52,788,785],{"__ignoreMap":50},[590,790,792],{"id":791},"_5-catch-request-errors","5. Catch request errors",[45,794,796],{"className":47,"code":795,"language":49,"meta":50,"style":50},"except requests.RequestException as e:\n    print(url, \"ERROR:\", e)\n",[52,797,798,814],{"__ignoreMap":50},[55,799,800,802,804,806,808,810,812],{"class":57,"line":58},[55,801,337],{"class":61},[55,803,175],{"class":65},[55,805,178],{"class":86},[55,807,241],{"class":225},[55,809,244],{"class":61},[55,811,247],{"class":65},[55,813,156],{"class":86},[55,815,816,819,821,823,825,827,829,831,833,835],{"class":57,"line":69},[55,817,818],{"class":210},"    print",[55,820,185],{"class":86},[55,822,188],{"class":181},[55,824,191],{"class":86},[55,826,263],{"class":93},[55,828,266],{"class":97},[55,830,101],{"class":93},[55,832,191],{"class":86},[55,834,247],{"class":181},[55,836,204],{"class":86},[14,838,839],{},"This catches network-related problems, such as:",[21,841,842,845,848,851],{},[24,843,844],{},"connection failures",[24,846,847],{},"timeout errors",[24,849,850],{},"invalid domains",[24,852,853],{},"other request problems",[14,855,856,857,334,859,861],{},"The script keeps running even if one URL fails. That is why ",[52,858,333],{},[52,860,337],{}," is useful here.",[14,863,864,865,178],{},"For more about working with responses, see ",[342,866,868],{"href":867},"\u002Fhow-to\u002Fhow-to-handle-api-responses-in-python\u002F","how to handle API responses in Python",[40,870,872],{"id":871},"understanding-common-status-codes","Understanding common status codes",[14,874,875],{},"A status code is a number returned by the server.",[14,877,878],{},"Common ones include:",[21,880,881,887,897,903],{},[24,882,883,886],{},[52,884,885],{},"200"," means success",[24,888,889,892,893,896],{},[52,890,891],{},"301"," or ",[52,894,895],{},"302"," means redirect",[24,898,899,902],{},[52,900,901],{},"404"," means page not found",[24,904,905,908],{},[52,906,907],{},"500"," means server error",[14,910,911],{},"Example:",[45,913,915],{"className":47,"code":914,"language":49,"meta":50,"style":50},"import requests\n\nresponse = requests.get(\"https:\u002F\u002Fexample.com\", timeout=5)\nprint(response.status_code)\n",[52,916,917,923,927,957],{"__ignoreMap":50},[55,918,919,921],{"class":57,"line":58},[55,920,62],{"class":61},[55,922,66],{"class":65},[55,924,925],{"class":57,"line":69},[55,926,73],{"emptyLinePlaceholder":72},[55,928,929,931,933,935,937,939,941,943,945,947,949,951,953,955],{"class":57,"line":76},[55,930,688],{"class":65},[55,932,83],{"class":82},[55,934,175],{"class":65},[55,936,178],{"class":86},[55,938,182],{"class":181},[55,940,185],{"class":86},[55,942,101],{"class":93},[55,944,112],{"class":97},[55,946,101],{"class":93},[55,948,191],{"class":86},[55,950,195],{"class":194},[55,952,83],{"class":82},[55,954,201],{"class":200},[55,956,204],{"class":86},[55,958,959,961,963,966,968,970],{"class":57,"line":90},[55,960,756],{"class":210},[55,962,185],{"class":86},[55,964,965],{"class":181},"response",[55,967,178],{"class":86},[55,969,226],{"class":225},[55,971,204],{"class":86},[14,973,974],{},"Possible output:",[45,976,979],{"className":977,"code":978,"language":786,"meta":50},[784],"200\n",[52,980,978],{"__ignoreMap":50},[14,982,983],{},"A status code tells you what happened at a high level, but not always the full reason.",[14,985,986],{},"For example:",[21,988,989,994],{},[24,990,991,993],{},[52,992,901],{}," means the server was reached, but the page was not found",[24,995,996],{},"this is different from a connection error, where Python could not reach the server at all",[40,998,1000],{"id":999},"beginner-improvements-to-the-script","Beginner improvements to the script",[14,1002,1003],{},"Once the basic version works, you can improve it in simple ways.",[14,1005,1006],{},"You could:",[21,1008,1009,1012,1015,1018,1021],{},[24,1010,1011],{},"read URLs from a text file instead of hard-coding them",[24,1013,1014],{},"save results to a CSV file",[24,1016,1017],{},"mark working and broken URLs clearly",[24,1019,1020],{},"skip blank lines",[24,1022,1023],{},"check redirects if needed",[14,1025,1026],{},"Here is a small improved version that labels results more clearly:",[45,1028,1030],{"className":47,"code":1029,"language":49,"meta":50,"style":50},"import requests\n\nurls = [\n    \"https:\u002F\u002Fwww.python.org\",\n    \"https:\u002F\u002Fexample.com\",\n    \"\",\n    \"https:\u002F\u002Fthis-url-does-not-exist-12345.com\"\n]\n\nfor url in urls:\n    if not url:\n        continue\n\n    try:\n        response = requests.get(url, timeout=5)\n\n        if response.status_code == 200:\n            print(url, \"- WORKING\")\n        else:\n            print(url, f\"- STATUS {response.status_code}\")\n\n    except requests.RequestException as e:\n        print(url, \"- ERROR:\", e)\n",[52,1031,1032,1038,1042,1050,1060,1070,1077,1085,1089,1093,1105,1118,1123,1127,1133,1160,1165,1185,1206,1214,1248,1253,1270],{"__ignoreMap":50},[55,1033,1034,1036],{"class":57,"line":58},[55,1035,62],{"class":61},[55,1037,66],{"class":65},[55,1039,1040],{"class":57,"line":69},[55,1041,73],{"emptyLinePlaceholder":72},[55,1043,1044,1046,1048],{"class":57,"line":76},[55,1045,79],{"class":65},[55,1047,83],{"class":82},[55,1049,87],{"class":86},[55,1051,1052,1054,1056,1058],{"class":57,"line":90},[55,1053,94],{"class":93},[55,1055,98],{"class":97},[55,1057,101],{"class":93},[55,1059,104],{"class":86},[55,1061,1062,1064,1066,1068],{"class":57,"line":107},[55,1063,94],{"class":93},[55,1065,112],{"class":97},[55,1067,101],{"class":93},[55,1069,104],{"class":86},[55,1071,1072,1075],{"class":57,"line":119},[55,1073,1074],{"class":93},"    \"\"",[55,1076,104],{"class":86},[55,1078,1079,1081,1083],{"class":57,"line":130},[55,1080,94],{"class":93},[55,1082,124],{"class":97},[55,1084,127],{"class":93},[55,1086,1087],{"class":57,"line":136},[55,1088,133],{"class":86},[55,1090,1091],{"class":57,"line":141},[55,1092,73],{"emptyLinePlaceholder":72},[55,1094,1095,1097,1099,1101,1103],{"class":57,"line":159},[55,1096,144],{"class":61},[55,1098,147],{"class":65},[55,1100,150],{"class":61},[55,1102,153],{"class":65},[55,1104,156],{"class":86},[55,1106,1107,1110,1113,1116],{"class":57,"line":167},[55,1108,1109],{"class":61},"    if",[55,1111,1112],{"class":82}," not",[55,1114,1115],{"class":65}," url",[55,1117,156],{"class":86},[55,1119,1120],{"class":57,"line":207},[55,1121,1122],{"class":61},"        continue\n",[55,1124,1125],{"class":57,"line":231},[55,1126,73],{"emptyLinePlaceholder":72},[55,1128,1129,1131],{"class":57,"line":252},[55,1130,162],{"class":61},[55,1132,156],{"class":86},[55,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158],{"class":57,"line":1135},15,[55,1137,170],{"class":65},[55,1139,83],{"class":82},[55,1141,175],{"class":65},[55,1143,178],{"class":86},[55,1145,182],{"class":181},[55,1147,185],{"class":86},[55,1149,188],{"class":181},[55,1151,191],{"class":86},[55,1153,195],{"class":194},[55,1155,83],{"class":82},[55,1157,201],{"class":200},[55,1159,204],{"class":86},[55,1161,1163],{"class":57,"line":1162},16,[55,1164,73],{"emptyLinePlaceholder":72},[55,1166,1168,1171,1173,1175,1177,1180,1183],{"class":57,"line":1167},17,[55,1169,1170],{"class":61},"        if",[55,1172,220],{"class":65},[55,1174,178],{"class":86},[55,1176,226],{"class":225},[55,1178,1179],{"class":82}," ==",[55,1181,1182],{"class":200}," 200",[55,1184,156],{"class":86},[55,1186,1188,1191,1193,1195,1197,1199,1202,1204],{"class":57,"line":1187},18,[55,1189,1190],{"class":210},"            print",[55,1192,185],{"class":86},[55,1194,188],{"class":181},[55,1196,191],{"class":86},[55,1198,263],{"class":93},[55,1200,1201],{"class":97},"- WORKING",[55,1203,101],{"class":93},[55,1205,204],{"class":86},[55,1207,1209,1212],{"class":57,"line":1208},19,[55,1210,1211],{"class":61},"        else",[55,1213,156],{"class":86},[55,1215,1217,1219,1221,1223,1225,1229,1232,1235,1237,1239,1241,1244,1246],{"class":57,"line":1216},20,[55,1218,1190],{"class":210},[55,1220,185],{"class":86},[55,1222,188],{"class":181},[55,1224,191],{"class":86},[55,1226,1228],{"class":1227},"sbsja"," f",[55,1230,1231],{"class":97},"\"- STATUS ",[55,1233,1234],{"class":200},"{",[55,1236,965],{"class":181},[55,1238,178],{"class":86},[55,1240,226],{"class":225},[55,1242,1243],{"class":200},"}",[55,1245,101],{"class":97},[55,1247,204],{"class":86},[55,1249,1251],{"class":57,"line":1250},21,[55,1252,73],{"emptyLinePlaceholder":72},[55,1254,1256,1258,1260,1262,1264,1266,1268],{"class":57,"line":1255},22,[55,1257,234],{"class":61},[55,1259,175],{"class":65},[55,1261,178],{"class":86},[55,1263,241],{"class":225},[55,1265,244],{"class":61},[55,1267,247],{"class":65},[55,1269,156],{"class":86},[55,1271,1273,1275,1277,1279,1281,1283,1286,1288,1290,1292],{"class":57,"line":1272},23,[55,1274,211],{"class":210},[55,1276,185],{"class":86},[55,1278,188],{"class":181},[55,1280,191],{"class":86},[55,1282,263],{"class":93},[55,1284,1285],{"class":97},"- ERROR:",[55,1287,101],{"class":93},[55,1289,191],{"class":86},[55,1291,247],{"class":181},[55,1293,204],{"class":86},[14,1295,1296],{},"This version:",[21,1298,1299,1302,1308],{},[24,1300,1301],{},"skips blank values",[24,1303,1304,1305,1307],{},"marks ",[52,1306,885],{}," responses as working",[24,1309,1310],{},"still shows other status codes and errors",[14,1312,1313,1314,1318],{},"If you later want to load URLs from files, the ",[342,1315,1317],{"href":1316},"\u002Fstandard-library\u002Fpython-os-module-overview\u002F","Python os module overview"," can help when working with file paths.",[40,1320,1322],{"id":1321},"common-problems-when-checking-urls","Common problems when checking URLs",[14,1324,1325],{},"Here are common issues beginners run into:",[21,1327,1328,1336,1339,1342,1345],{},[24,1329,1330,1332,1333,1335],{},[52,1331,399],{}," if ",[52,1334,326],{}," is not installed",[24,1337,1338],{},"timeout errors if the site is slow",[24,1340,1341],{},"connection errors if the domain is wrong",[24,1343,1344],{},"some websites block automated requests",[24,1346,1347,1348,1350],{},"a valid domain can still return a ",[52,1349,901],{}," page",[14,1352,1353],{},"Also remember:",[21,1355,1356,1365,1368],{},[24,1357,1358,1359,892,1362],{},"the URL should usually include ",[52,1360,1361],{},"http:\u002F\u002F",[52,1363,1364],{},"https:\u002F\u002F",[24,1366,1367],{},"no internet connection means the request cannot succeed",[24,1369,1370],{},"no timeout can make the script wait too long",[14,1372,1373],{},"Common causes include:",[21,1375,1376,1381,1388,1391,1394],{},[24,1377,1378,1380],{},[52,1379,326],{}," package is not installed",[24,1382,1383,1384,892,1386],{},"URL is missing ",[52,1385,1361],{},[52,1387,1364],{},[24,1389,1390],{},"site is offline or domain name is wrong",[24,1392,1393],{},"internet connection is unavailable",[24,1395,1396],{},"the request waits too long because no timeout was set",[14,1398,1399],{},"Useful commands for debugging:",[45,1401,1403],{"className":361,"code":1402,"language":363,"meta":50,"style":50},"python --version\npip install requests\npip show requests\npython your_script.py\nping python.org\n",[52,1404,1405,1413,1421,1429,1436],{"__ignoreMap":50},[55,1406,1407,1409],{"class":57,"line":58},[55,1408,49],{"class":370},[55,1410,1412],{"class":1411},"stzsN"," --version\n",[55,1414,1415,1417,1419],{"class":57,"line":69},[55,1416,371],{"class":370},[55,1418,374],{"class":97},[55,1420,66],{"class":97},[55,1422,1423,1425,1427],{"class":57,"line":76},[55,1424,371],{"class":370},[55,1426,414],{"class":97},[55,1428,66],{"class":97},[55,1430,1431,1433],{"class":57,"line":90},[55,1432,49],{"class":370},[55,1434,1435],{"class":97}," your_script.py\n",[55,1437,1438,1441],{"class":57,"line":107},[55,1439,1440],{"class":370},"ping",[55,1442,1443],{"class":97}," python.org\n",[40,1445,1447],{"id":1446},"what-this-example-does-not-cover","What this example does not cover",[14,1449,1450],{},"This example is intentionally simple.",[14,1452,1453],{},"It does not cover:",[21,1455,1456,1459,1462,1465],{},[24,1457,1458],{},"advanced HTTP concepts",[24,1460,1461],{},"asynchronous requests",[24,1463,1464],{},"authentication",[24,1466,1467],{},"large-scale website monitoring",[14,1469,1470],{},"That keeps the script easier to understand if you are still learning the basics.",[40,1472,1474],{"id":1473},"faq","FAQ",[590,1476,1478],{"id":1477},"do-i-need-the-requests-library-for-a-url-checker","Do I need the requests library for a URL checker?",[14,1480,1481],{},"For this example, yes. It makes HTTP requests easier for beginners.",[590,1483,1485],{"id":1484},"why-does-a-url-return-404-instead-of-causing-an-exception","Why does a URL return 404 instead of causing an exception?",[14,1487,1488,1489,1491],{},"Because the server responded successfully. A ",[52,1490,901],{}," is still a real HTTP response.",[590,1493,1495],{"id":1494},"what-is-the-difference-between-a-status-code-and-an-error","What is the difference between a status code and an error?",[14,1497,1498],{},"A status code comes from the server. An error usually means Python could not complete the request.",[590,1500,1502],{"id":1501},"can-i-check-many-urls-at-once","Can I check many URLs at once?",[14,1504,1505],{},"Yes. Store them in a list or file and loop through them.",[40,1507,1509],{"id":1508},"see-also","See also",[21,1511,1512,1517,1522,1527,1532],{},[24,1513,1514],{},[342,1515,1516],{"href":741},"How to make an API request in Python",[24,1518,1519],{},[342,1520,1521],{"href":867},"How to handle API responses in Python",[24,1523,1524],{},[342,1525,1526],{"href":344},"Using try-except, else, and finally in Python",[24,1528,1529],{},[342,1530,1531],{"href":422},"How to fix ModuleNotFoundError: No module named X",[24,1533,1534],{},[342,1535,1537],{"href":1536},"\u002Fexamples\u002Fpython-api-request-example-get-request\u002F","Python API request example: GET request",[1539,1540,1541],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":50,"searchDepth":69,"depth":69,"links":1543},[1544,1545,1546,1547,1548,1556,1557,1558,1559,1560,1566],{"id":42,"depth":69,"text":43},{"id":280,"depth":69,"text":281},{"id":308,"depth":69,"text":309},{"id":348,"depth":69,"text":349},{"id":426,"depth":69,"text":427,"children":1549},[1550,1551,1552,1554,1555],{"id":592,"depth":76,"text":593},{"id":647,"depth":76,"text":648},{"id":674,"depth":76,"text":1553},"3. Send a request with requests.get()",{"id":745,"depth":76,"text":746},{"id":791,"depth":76,"text":792},{"id":871,"depth":69,"text":872},{"id":999,"depth":69,"text":1000},{"id":1321,"depth":69,"text":1322},{"id":1446,"depth":69,"text":1447},{"id":1473,"depth":69,"text":1474,"children":1561},[1562,1563,1564,1565],{"id":1477,"depth":76,"text":1478},{"id":1484,"depth":76,"text":1485},{"id":1494,"depth":76,"text":1495},{"id":1501,"depth":76,"text":1502},{"id":1508,"depth":69,"text":1509},"Master python url checker script example in our comprehensive Python beginner guide.","md",{},"\u002Fexamples\u002Fpython-url-checker-script-example",{"title":5,"description":1567},"examples\u002Fpython-url-checker-script-example","sio9USnP8eLB7g4QKAP2VBRztkp0yOrPblYnmMXaQSk",1777585509207]