獲取資訊
修改items.py如下:
import scrapy
class tutorialitem(scrapy.item):
# define the fields for your item here like:
# name = scrapy.field()
city = scrapy.field()
date = scrapy.field()
daydesc = scrapy.field()
daytemp = scrapy.field()
爬蟲**
內容如下,採用的專案還是之前建立的tutorial/weather.py
說明:name: 用於區別spider。該名字必須是唯一的,您不可以為不同的spider設定相同的名字。
start_urls: 包含了spider在啟動時進行爬取的url列表。因此,第乙個被獲取到的頁面將是其中之一。後續的url則從初始的url獲取到的資料中提取。
分析原始碼發現:
其中://*:選取文件中的所有元素。@:選擇屬性 /:從節點擊取 。extract():提取
pipeline
當item在spider中被收集之後,它將會被傳遞到item pipeline,一些元件會按照一定的順序執行對item的處理。
每個item pipeline元件(有時稱之為「item pipeline」)是實現了簡單方法的python類。他們接收到item並通過它執行一些行為,同時也決定此item是否繼續通過pipeline,或是被丟棄而不再進行處理。
以下是item pipeline的一些典型應用:
清理html資料
驗證爬取的資料(檢查item包含某些字段)
查重(並丟棄)
將爬取結果儲存到資料庫中
process_item(self, item, spider)
每個item pipeline元件都需要呼叫該方法,這個方法必須返回乙個 item (或任何繼承類)物件, 或是丟擲 dropitem 異常,被丟棄的item將不會被之後的pipeline元件所處理。
引數:
item (item 物件) – 被爬取的item
spider (spider 物件) – 爬取該item的spider
open_spider(self, spider)
當spider被開啟時,這個方法被呼叫。
引數: spider (spider 物件) – 被開啟的spider
close_spider(spider)
當spider被關閉時,這個方法被呼叫
引數: spider (spider 物件) – 被關閉的spider
from_crawler(cls, crawler)
pipeline**
編輯pipelines.py
class tutorialpipeline(object):
def __init__(self):
pass
def process_item(self, item, spider):
with open('wea.txt', 'w+') as file:
city = item['city'][0].encode('utf-8')
file.write('city:' + str(city) + '\n\n')
date = item['date']
desc = item['daydesc']
daydesc = desc[1::2]
nightdesc = desc[0::2]
daytemp = item['daytemp']
weaitem = zip(date, daydesc, nightdesc, daytemp)
for i in range(len(weaitem)):
item = weaitem[i]
d = item[0]
dd = item[1]
nd = item[2]
ta = item[3].split('/')
dt = ta[0]
nt = ta[1]
txt = 'date:\t\tday:()\t\tnight:()\n\n'.format( d,
dd.encode('utf-8'),
dt.encode('utf-8'),
nd.encode('utf-8'),
nt.encode('utf-8') )
file.write(txt)
return item
寫好item_pipelines後,還有很重要的一步,就是把 item_pipelines 新增到設定檔案 settings.py 中。
item_pipelines =
另外,有些**對網路爬蟲進行了阻止(注:本專案僅從技術角度處理此問題,個人強烈不建議您用爬蟲爬取有版權資訊的資料),我們可以在設定中修改一下爬蟲的 user_agent 和 referer 資訊,增加爬蟲請求的時間間隔。
debug
顯示只有城市:
scrapy內建的html解析是基於lxml庫的,這個庫對html的解析的容錯性不是很好,通過檢查網頁原始碼,發現有部分標籤是不匹配的(地區和瀏覽器不同取到的原始碼可能不同)
換個html**解析器就可以了,這裡建議用 beautifulsoup
爬蟲**如下:
4 Python 處理 ini 檔案
ini 檔案是initialization file的縮寫,即初始化檔案,是windows的系統配置檔案所採用的儲存格式。一 ini 檔案示例 下面是乙個 ini 檔案 school ip 10.15.40.123 mask 255.255.255.0 gateway 10.15.40.1 dns ...
4 python教程 分支 迴圈
講程式設計,不得不講到順序 分支 迴圈。順序就是從上到下執行 這個很簡單,不用再說了。在講分支 迴圈的時候,要特別注意python 中的強制縮排。我們先看看分支 1 簡單的if else a 1 if a 1 注意後面有乙個冒號。其中 是相等判斷 print 1 注意print 函式之前有乙個tab...
4,Python程式結構
a 3 單分支選擇結構 if a 3 print this number is greater than 3 雙分支選擇結構 if a 3 print this number is greater than 3 else print this number is smaller or equal t...