Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
源:Python爬蟲與數據挖掘
作者:霖hero
關于Scrapy理論的知識,可以參考我的上一篇文章,這里不再贅述,直接上干貨。
首先我們進入北京新發地價格行情網頁并打開開發者工具,如下圖所示:
經過簡單的查找,發現每個getPriceData.html存放著價格行情的數據,由此可得,我們可以通過getPriceData.html來進行數據的獲取。
觀察Headers請求,如下圖所示:
發現它是POST請求,請求URL鏈接是http://www.xinfadi.com.cn/getPriceData.html,current是翻頁的重要參數,limit是每頁有多少行數據,我們可以構造消息體,代碼如下所示:
data={
'limit': '20',
'current':page
}
通過scrapy.Request()方法將消息體傳入到參數里面。
或者我們可以根據測試和觀察規律,自己構造URL鏈接,通過觀察分析,請求的URL鏈接可以為:
http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=1
http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=2
http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=3
分析北京新發地價格行情后,接下來我們首先創建一個Scrapy項目,使用如下命令:
scrapy startproject Vegetables
這樣我們就成功創建了一個Scrapy項目,項目文件如下所示:
接下來創建spider爬蟲,使用如下命令:
scrapy genspider vegetables www.xinfadi.com.cn
創建后vegetables.py內容如下所示:
import scrapy
class VegetablesSpider(scrapy.Spider):
name='vegetables'
allowed_domains=['www.xinfadi.com.cn']
start_urls=['https://www.xinfadi.com.cn']
def parse(self, response):
pass
在提取數據前,我們首先把要爬取的數據字段在items.py文件中定義好,代碼如下所示:
import scrapy
class VegetablesItem(scrapy.Item):
# define the fields for your item here like:
productName=scrapy.Field()
lowPrice=scrapy.Field()
highPrice=scrapy.Field()
這里我們定義了三個字段分別是productName、lowPrice、highPrice
定義好字段后,接下來將在創建的vegetables.py文件中進行數據的提取,具體代碼如下
import scrapy
from Vegetables.items import VegetablesItem
class VegetablesSpider(scrapy.Spider):
name='vegetables'
allowed_domains=['www.xinfadi.com.cn']
def start_requests(self):
for i in range(1, 3):
url=f'http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t={i}'
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
html=response.json()
fooddata=html.get('list')
for i in fooddata:
item=VegetablesItem()
item['highPrice']=i.get('highPrice'),
item['lowPrice']=i.get('lowPrice'),
item['prodName']=i.get('prodName'),
yield item
首先我們導入vegetablesitem,使用start_requests函數實現翻頁,大家可以使用剛才我們所講的方法實現翻頁,實現翻頁后,我們通過編寫parse()方法實現數據的獲取,首先我們把引擎響應的數據以json()格式存放在html里面,調用get()方法來提取我們想要的數據,最后通過yield生成器返回給引擎。
最后我們在settings.py設置引擎的啟動,代碼如下所示:
ITEM_PIPELINES={
'Vegetables.pipelines.VegetablesPipeline': 300,
}
在這里我們就不保存數據在MongoDB數據庫里面了,我們直接啟動Spider爬蟲并把數據以csv格式輸出,使用如下命令:
scrapy crawl vegetables -o 11.c
運行結果如下:
好了,Scrapy框架爬取北京新發地就講解到這里了,感謝觀看?。。?/p>
大家好,我是霖hero。這篇文章基于上篇理論文章,主要給大家分享了Scrapy爬蟲框架的實戰內容,Scrapy是一個基于Twisted的異步處理框架,是純Python實現的爬蟲框架,是提取結構性數據而編寫的應用框架,其架構清晰,模塊之間的耦合程度低,可擴展性極強。
輕快、可直接播放的 GIF 小動畫很適合嵌入圖文。
但是很多圖文編輯器復制粘貼 GIF 圖像都會出現問題。例如粘貼GIF 變成一幀靜態圖像,或提示無效圖像,或粘貼正常但發布上傳時報錯 …… 然后我們只能挨個 GIF 都重復一遍:錄屏 > 壓縮 > 保存 > 添加圖像 > 上傳 > 插入文章 ……
使用極簡錄屏軟件 Gif123 可以大幅簡化上面的操作:Gif123 可以一鍵錄屏,一鍵復制動畫,在圖文編輯器里 Ctrl +V 一下粘貼動畫就可以解決所有問題。Gif123 復制的 GIF 格式擁有良好的兼容性,不會動畫變靜態圖像,不會提示無效圖像,上傳時不會報錯。
Gif123 是一個開源軟件,體積很小只有 755KB,獨立 EXE 無任何外部依賴,兼容 Windows XP,Vista,Win7,Win8,Win10,Win11 …… 等所有流行桌面操作系統。
軟件極簡單,只有 3 個主要按鈕:錄制、預覽、復制。
Gif123 主窗口就是錄屏選框,可拖動選框選擇要錄制的區域。相比很多更復雜更強大的 GIF 錄制工具,Gif123 的操作非常簡單,一看就會。
Gif123 雖然很小,但是在 GIF 有限的顏色限制下仍然可以顯著提升畫質。錄制完成以后可自動調用強悍的 Gifsicle 壓縮 GIF 文件體積。并且在高分屏下可自動壓縮 GIF 至正常分辨率 —— 以避免瀏覽圖像時重復放大。
Gif123 可錄制合成鼠標軌跡,可調整鼠標指針大小,可在設置中打開鼠標指針高亮光圈功能,高亮光圈可跟隨鼠標移動以指示鼠標位置,單擊鼠標時會顯示動畫光圈( 光圈顏色透明度為0 時僅顯示單擊動畫 ):
按左鍵光圈就會向左側壓縮成半圓,按右鍵光圈就會向右側壓縮成半圓,按中鍵就會向內側縮小為小圓。很多錄屏軟件僅用顏色區分左右按鍵 —— 說實話這可能只有錄屏的人明白,看動畫的人估計分不清。
Gif123 最小化時按錄屏熱鍵可顯示快速選框:
切換到預覽模式且暫停后可編輯動畫幀,在預覽動畫上點右鍵可彈出菜單,可以暫停動畫幀( 在圖像上按回車可以快速「暫停 / 繼續」播放動畫 ),動畫暫停狀態下可以使用鼠標滾輪、幀滑塊控件、Page Up/Down ……等手動翻頁,暫停狀態可以方便地抽幀刪幀。
預覽模式可在上圖界面底部的輸入框中重新設置優化參數。在參數輸入框中點任何一個參數的任何位置,按鼠標滾輪可以快速調整數值,如下圖:
可實時預覽優化效果與優化后的文件體積。重新優化總是基于原始圖像 —— 上次優化設定不會影響當前優化效果。
Gif123 是我使用 aardio 開發的。至于 aardio 也是我開發的編程語言。關于 aardio 請參考文章:2022年,開發獨立 EXE 桌面應用程序,用什么語言、技術合適
GIF 還是非常有用的,很多時候我們需要這種小、簡單、不復雜又夠用的東西。GIF 錄屏的工具雖然很多,但是用著用著有時候就發現不需要的功能很多,需要的功能它又沒有或者不方便,所以我決定自己用 aardio 寫一個,實際上要不了幾句代碼。
GIF 錄制好了,我們一般當然是復制并分享了,如果我們打開圖像再去復制還是有些麻煩,能一鍵復制多好。但是這個看起來簡單的事 —— 還真是有些麻煩,首先系統剪貼板其實并不支持 GIF 圖像,所以很多軟件里復制 GIF 只復制了第一幀。
但是我們發現 IE 是可以復制GIF的,有的文章說通過復制HTML就可以了,用 aardio 來寫實際上就是這樣:
import win.clip.html;
var html=win.clip.html();
html.write(`<img src="c:\test.gif" />`)
網上很多文章都這么寫,但實際上根據我的測試,這樣復制 GIF 以后瀏覽器或者其他一些軟件里并不能粘貼。
這個其實可以理解,瀏覽器是沒有權限訪問本地文件的,即使他得到了剪貼板中的HTML,也沒有權限去讀任意位置的本地文件,考慮到了這一點,我決定把本地圖像轉換為 Data URL 直接嵌入HTML,主要代碼如下:
import win.clip.html;
import crypt;
var html=win.clip.html();
var dataUrl=string.format('data:image/gif;base64,%s'
,crypt.encodeBin( string.loadBuffer(filePah),,0x40000001/*_CRYPT_STRING_BASE64*/) );
html.write(`<img src="`+ dataUrl+`" />`,,false);
上面的代碼實現了以后,我在瀏覽器圖文編輯器里測試了一下,用這種方法復制一個 GIF 文件以后,再到編輯器里 Ctrl + V 粘貼,看到了 GIF 動畫在編輯器里顯示出來了,還沒高興零點幾秒,彈出一個錯誤信息:粘貼圖像失敗。看了一下是遠程錯誤,猜測他把這個當作普通遠程圖像地址去處理了。
然后在其他聊天軟件里試著粘貼了一下,也沒任何反應??磥泶寺凡煌ā?吹接腥苏f可以復制為 CF_HDROP 格式,好吧,aardio 干這事倒也方便,代碼如下:
import win.clip.file;
win.clip.file.write( filePath );
其實這等價于在資源管理器里右鍵復制文件。用上面的方法復制了圖像以后,到聊天軟件里粘貼試了一下,粘貼出來的是一個文件圖標,并沒有認出是 GIF 動畫。
想起之前看到有人說:
IE 能復制 GIF,但是在剪貼板里看到的只是靜態的 BMP 圖像,不知道 IE 是如何實現的,
難道 ……
于是試著在剪貼板里先復制 GIF 第一幀的靜態圖像,再復制文件本身(同時復制2種格式),用這種方法復制了一個 GIF 圖像,然后到 聊天工具里粘貼,這回粘貼出來的還真是 GIF 動畫 ,直接就顯示預覽動畫了 —— 完美!
然后打開瀏覽器編輯器,試著粘貼了一下,遇到2種不同的反應,第1種是出現了靜態圖像 —— 沒動畫,第2種是靜態圖像也沒有,細節沒有深究。想起之前復制 Data URL 失敗的過程,這難道是 …… 于是趕緊換第 3 種方法,復制第一幀靜態圖像,復制文件,然后再復制 Data URL ,一氣呵成三連擊以后終于成功了,瀏覽器編輯器里完美粘貼出來 GIF 動畫,試了很多軟件以及圖文編輯器也都能完美支持。
于是,我又加了一個庫 win.clip.gif,用起來就太簡單了:
import win.clip.gif;
win.clip.gif.write( filePath );
您看這就是 aardio 的好處了,像這種庫一天能寫一打出來,再復雜的代碼都可以簡化,這得益于 aardio 良好的模塊化支持。
4年的時候小編還是個苦逼青年(說的好像現在不苦逼一樣)閑來無事,想做一本屬于自己的電子書,最開始的時候,我想的是利用html進行網頁文檔的制作,結果發現自己毫無網頁基礎,實在是舉步維艱,畢竟小編是個24k純理工男,學的還是化學專業。
不過不要緊,在我的孜孜不倦和勇于探索的精神下,終于找到一款簡單易學,零網頁基礎,零電腦基礎,零排版基礎,零智商基礎的翻頁電子書制作軟件:iebook (讓大家賤笑了)
在那個苦逼的買不起電腦的年代,小編天天泡在網吧,旁邊是各種小學生風騷犀利的lol操作讓我自愧不如,經過一個星期的鉆研(只怪中途網吧斷電,文檔無情的沒有備份,那感覺讓人絕望)終于做出了人生自己的第一本電子書——《后青春期的詩》效果大概是這樣的:
iebook的功能是能實現翻頁,背景音樂,點擊跳轉,自動滾動等,如果你想做散文詩歌或者故事類的文章,不失為一個不錯的選擇。
最終效果一般是以exe格式存在,也可以在線發表,看起來是不是很高大上?
說到技術含量嘛,前面也說過,不難,只要具備基本的審美觀和核心內容,加上模板的插入,音樂的插入,制作出一本exe文檔的電子書簡直易如反掌,就像走在路上隨隨便便就能撿張毛爺爺一樣,就是這么easy。對電子書感興趣的朋友可以關注小編公眾號fish1923 回復“軟件”獲取iebook,或者回復“電子書”查看本人制作的電子書,歡迎探討學習。
不過正所謂“師傅領進門,修行靠個人”任何軟件的應用本質上是很簡單的,例如ps,例如cad,但是要想做到極致卻需要付出很大的努力。就iebook這個軟件來說,我隨便講幾個關鍵點,也許會對你的制作方面有些幫助,讓你少走一些彎路。
插入幀。
就以標準組件來說,一般會有卷首頁,封面,版頁,封底。我們主要是插入版頁如圖所示:
點擊添加頁面就會右方菜單欄出現多個幀,每一幀就是我們說的“每一頁”,所謂幀,通俗點說就是一個單位,可以理解為ps里的每一個圖層,每一幀都是靜止的圖象。你只需要在每一個幀上編輯即可。
然后插入文字,模板,都是可以手動拖拽的,復制、放大、縮小、旋轉等等操作,都灰常方便。
2.關于模板的下載
在添加完幀之后,接下來就是模板的下載了
如圖所示,不管是組合模板,還是頁面背景,圖文,文字模板,裝飾,特效。點擊下方的模板下載,都是會跳轉到iebook官方網站下載的,比較精美的當然是需要付費下載的(這個世界沒有免費的午餐)。
3.關于屬性欄的設置。
這就不多說了吧,零智商操作,音樂可以從電腦端導入,我就不廢話了。
4.生成的電子雜志去哪里了?
正在編譯(生成)EXE電子雜志;
電子雜志編譯(生成)完畢;單擊打開文件夾按鈕,打開電子雜志所在路徑,您可以將生成好的電子雜志發給好友分享;己經編譯完畢的電子雜志,預覽整體效果。
這樣,一篇精美的翻頁電子書就生成了,是不是一下子就由一個屌絲青年變身成為文藝小青年了,總的來說,這款軟件還是十分簡單好用的。
其實,誰又天生優秀呢?優秀來源于對簡單事情的重復操作和追求極致的精神。歡迎關注小編公眾號fish1923 探討學習!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。