|
| 1 | +.. Copyright (C) Brad Miller, David Ranum, Jeffrey Elkner, Peter Wentworth, Allen B. Downey, Chris |
| 2 | + Meyers, and Dario Mitchell. Permission is granted to copy, distribute |
| 3 | + and/or modify this document under the terms of the GNU Free Documentation |
| 4 | + License, Version 1.3 or any later version published by the Free Software |
| 5 | + Foundation; with Invariant Sections being Forward, Prefaces, and |
| 6 | + Contributor List, no Front-Cover Texts, and no Back-Cover Texts. A copy of |
| 7 | + the license is included in the section entitled "GNU Free Documentation |
| 8 | + License". |
| 9 | +
|
| 10 | +.. qnum:: |
| 11 | + :prefix: file-1- |
| 12 | + :start: 1 |
| 13 | + |
| 14 | +Fetching Something From The Web |
| 15 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 16 | + |
| 17 | +The Python libraries are pretty messy in places. But here is a very simple example that copies |
| 18 | +the contents at some web URL to a local file. We will need to get a few things right before this works: |
| 19 | + |
| 20 | +* The resource we’re trying to fetch must exist! Check this using a browser. |
| 21 | +* We’ll need permission to write to the destination filename, and the file will be created in the “current directory” - i.e. the same folder that the Python program is saved in. |
| 22 | +* If we are behind a proxy server that requires authentication, (as some students are), this may require some more special handling to work around our proxy. Use a local resource for the purpose of this demonstration! |
| 23 | + |
| 24 | +We will try to retrieve the content of the HTML of this page as in the following code. |
| 25 | + |
| 26 | + |
| 27 | +.. activecode:: ch11_1 |
| 28 | + |
| 29 | + import urllib.request |
| 30 | + |
| 31 | + def retrieve_page(url): |
| 32 | + """ Retrieve the contents of a web page. |
| 33 | + """ |
| 34 | + my_socket = urllib.request.urlopen(url) |
| 35 | + dta = my_socket.read() |
| 36 | + return dta |
| 37 | + |
| 38 | + the_text = retrieve_page("https://runestone.academy/runestone/books/published/thinkcspy/Files/FetchingSomethingFromTheWeb.html") |
| 39 | + print(the_text) |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
0 commit comments