乌班图用scrapy爬取天气
时间: 2024-06-08 20:11:21 浏览: 68
好的,以下是一个简单的使用Scrapy爬取天气信息的示例:
1. 创建Scrapy项目
在命令行中使用以下命令创建一个Scrapy项目:
```
scrapy startproject weather
```
其中,`weather`是项目的名称。
2. 创建Spider
在Scrapy项目中,Spider是用于从网站中提取数据的类。通过以下命令在项目中创建一个Spider:
```
cd weather
scrapy genspider weather_spider example.com
```
其中,`weather_spider`是Spider的名称,`example.com`是要爬取的网站的域名。在此示例中,我们将从`http://www.weather.com.cn`网站爬取天气信息。
3. 编写Spider代码
打开`weather_spider.py`文件,并添加以下代码:
```python
import scrapy
class WeatherSpider(scrapy.Spider):
name = 'weather_spider'
allowed_domains = ['weather.com.cn']
start_urls = ['http://www.weather.com.cn/weather/101010100.shtml']
def parse(self, response):
# 提取天气信息
pass
```
在上面的代码中,`name`属性指定了Spider的名称,`allowed_domains`属性指定了允许爬取的域名,`start_urls`属性指定了Spider开始爬取的URL。`parse`方法用于解析网页并提取所需的数据。
4. 解析网页并提取数据
在`parse`方法中,我们可以使用XPath或CSS选择器提取网页中的数据。在此示例中,我们使用XPath提取天气信息。以下是示例代码:
```python
import scrapy
class WeatherSpider(scrapy.Spider):
name = 'weather_spider'
allowed_domains = ['weather.com.cn']
start_urls = ['http://www.weather.com.cn/weather/101010100.shtml']
def parse(self, response):
# 提取天气信息
city = response.xpath('//div[@class="crumbs fl"]/a[last()]/text()')[0].extract()
date = response.xpath('//input[@id="fc_24h_internal_update_time"]/@value')[0].extract()
weather = response.xpath('//div[@id="7d"]/ul[@class="t clearfix"]/li/p[@class="wea"]/text()')
temperature = response.xpath('//div[@id="7d"]/ul[@class="t clearfix"]/li/p[@class="tem"]/span/text()')
wind = response.xpath('//div[@id="7d"]/ul[@class="t clearfix"]/li/p[@class="win"]/i/text()')
# 打印天气信息
for i in range(len(weather)):
print(city, date, weather[i].extract(), temperature[i*2].extract()+temperature[i*2+1].extract(), wind[i].extract())
```
在上面的代码中,我们使用XPath选择器提取了城市名称、日期、天气、温度和风速等信息。最后,我们使用循环遍历天气、温度和风速列表,将提取到的数据打印到控制台上。
5. 运行Spider
在命令行中使用以下命令运行Spider:
```
scrapy crawl weather_spider
```
Spider将会自动访问指定的URL,提取数据并打印到控制台上。
以上就是一个简单的使用Scrapy爬取天气信息的示例。当然,实际情况可能更加复杂,需要根据具体的需求进行修改。
阅读全文