- Python Programming Blueprints
- Daniel Furtado Marcus Pennington
- 356字
- 2021-06-24 18:53:46
Fetching data from the weather website
We are going to add a class named Request that will be responsible for getting the data from the weather website. Let's add a file named request.py in the weatherterm/core directory with the following content:
import os
from selenium import webdriver
class Request:
def __init__(self, base_url):
self._phantomjs_path = os.path.join(os.curdir,
'phantomjs/bin/phantomjs')
self._base_url = base_url
self._driver = webdriver.PhantomJS(self._phantomjs_path)
def fetch_data(self, forecast, area):
url = self._base_url.format(forecast=forecast, area=area)
self._driver.get(url)
if self._driver.title == '404 Not Found':
error_message = ('Could not find the area that you '
'searching for')
raise Exception(error_message)
return self._driver.page_source
This class is very simple; the initializer defines the base URL and creates a PhantomJS driver, using the path where PhantomJS is installed. The fetch_data method formats the URL, adding the forecast option and the area. After that, the webdriver performs a request and returns the page source. If the title of the markup returned is 404 Not Found, it will raise an exception. Unfortunately, Selenium doesn't provide a proper way of getting the HTTP Status code; this would have been much better than comparing strings.
Now, we can import it in the __init__.py file in the weatherterm/core directory:
from .request import Request
Now we have a parser loader to load any parser that we drop into the directory weatherterm/parsers, we have a class representing the forecast model, and an enumeration ForecastType so we can specify which type of forecast we are parsing. The enumeration represents temperature units and utility functions to convert temperatures from Fahrenheit to Celsius and Celsius to Fahrenheit. So now, we should be ready to create the application's entry point to receive all the arguments passed by the user, run the parser, and present the data on the terminal.
- 社交網絡對齊
- 異構基因共表達網絡的分析方法
- 網絡創新指數研究
- Socket.IO Real-time Web Application Development
- 網絡安全應急響應技術實戰
- Unity Artificial Intelligence Programming
- Working with Legacy Systems
- 面向5G-Advanced的關鍵技術
- 通信十年:擁抱互聯網
- 轉化:提升網站流量和轉化率的技巧
- Building RESTful Web Services with .NET Core
- Professional Scala
- React Design Patterns and Best Practices(Second Edition)
- 天下一家:網絡聯通世界(科學新導向叢書)
- 計算機網絡(項目教學版)