代码源分析

<h4 class="slider_ct_name" id="slider_ct_name">武汉</h4>    <!--城市名可以通过获取id为slider_ct_name的h4元素获取-->

...
<div class="blk_fc_c0_scroll" id="blk_fc_c0_scroll" style=" 1700px;">
 <div class="blk_fc_c0_i"> 
        <p class="wt_fc_c0_i_date">01-28</p>
 <!--日期可以通过获取id为blk_fc_c0_scroll下的class为wt_fc_c0_i_date的p元素获取-->      
     <p class="wt_fc_c0_i_day wt_fc_c0_i_today">今天</p>
        <p class="wt_fc_c0_i_icons clearfix">
            <img class="icons0_wt png24" src="http://www.sinaimg.cn/dy/weather/main/index14/007/icons_42_yl/w_04_27_00.png" alt="雨夹雪" title="雨夹雪">
<!--天气描述可以通过获取id为blk_fc_c0_scroll下的class为icons0_wt的img元素获取-->

<img class="icons0_wt png24" src="http://www.sinaimg.cn/dy/weather/main/index14/007/icons_42_yl/w_04_29_01.png" alt="中雪" title="中雪"> </p> <p class="wt_fc_c0_i_times"> <span class="wt_fc_c0_i_time">白天</span> <span class="wt_fc_c0_i_time">夜间</span> </p> <p class="wt_fc_c0_i_temp">1°C / -2°C</p>
<!--温度可以通过获取id为blk_fc_c0_scroll下的class为wt_fc_c0_i_temp的p元素获取-->
        <p class="wt_fc_c0_i_tip">北风 3~4级</p>
        <p class="wt_fc_c0_i_tip">无持续风向 小于3级</p>
    </div>
    <div class="blk_fc_c0_i">    
        <p class="wt_fc_c0_i_date">01-29</p>
        <p class="wt_fc_c0_i_day ">星期四</p>
        <p class="wt_fc_c0_i_icons clearfix">
            <img class="icons0_wt png24" src="http://www.sinaimg.cn/dy/weather/main/index14/007/icons_42_yl/w_04_29_00.png" alt="中雪" title="中雪">
            <img class="icons0_wt png24" src="http://www.sinaimg.cn/dy/weather/main/index14/007/icons_42_yl/w_07_25_01.png" alt="阴" title="阴">
        </p>
        <p class="wt_fc_c0_i_times">
            <span class="wt_fc_c0_i_time">白天</span>
            <span class="wt_fc_c0_i_time">夜间</span>
        </p>
        <p class="wt_fc_c0_i_temp">1°C / -2°C</p>
        <p class="wt_fc_c0_i_tip">无持续风向 小于3级</p>
    </div>
    ...
</div>

so, spider代码如下(代码中的xpath和css后面括号的内容为选择器)

# -*- coding: utf-8 -*-
import scrapy
from weather.items import WeatherItem


class WeatherSpider(scrapy.Spider):
    name = "myweather"
    allowed_domains = ["sina.com.cn"]
    start_urls = ['http://weather.sina.com.cn']

    def parse(self, response):
        item = WeatherItem()
        item['city'] = response.xpath('//*[@id="slider_ct_name"]/text()').extract()
<!--城市名可以通过获取id为slider_ct_name的h4元素获取-->
tenDay = response.xpath('//*[@id="blk_fc_c0_scroll"]'); 
item[
'date'] = tenDay.css('p.wt_fc_c0_i_date::text').extract()
 <!--日期可以通过获取id为blk_fc_c0_scroll下的class为wt_fc_c0_i_date的p元素获取-->

item[
'dayDesc'] = tenDay.css('img.icons0_wt::attr(title)').extract()
<!--天气描述可以通过获取id为blk_fc_c0_scroll下的class为icons0_wt的img元素获取-->

item[
'dayTemp'] = tenDay.css('p.wt_fc_c0_i_temp::text').extract()
<!--温度可以通过获取id为blk_fc_c0_scroll下的class为wt_fc_c0_i_temp的p元素获取-->

return item
原文地址:https://www.cnblogs.com/GeJinZi/p/6769769.html