2019-06-21 python day-09

1.scrapy爬蟲框架的使用:

一 Scrapy爬蟲框架

發(fā)送請(qǐng)求 ---> 獲取響應(yīng)數(shù)據(jù) ---> 解析數(shù)據(jù) ---> 保存數(shù)據(jù)

** Scarpy框架介紹 **

1未玻、引擎(EGINE)

引擎負(fù)責(zé)控制系統(tǒng)所有組件之間的數(shù)據(jù)流,并在某些動(dòng)作發(fā)生時(shí)觸發(fā)事件胡控。有關(guān)詳細(xì)信息扳剿,請(qǐng)參見上面的數(shù)據(jù)流部分。

2昼激、調(diào)度器(SCHEDULER)

用來接受引擎發(fā)過來的請(qǐng)求, 壓入隊(duì)列中, 并在引擎再次請(qǐng)求的時(shí)候返回. 可以想像成一個(gè)URL的優(yōu)先級(jí)隊(duì)列, 由它來決定下一個(gè)要抓取的網(wǎng)址是什么, 同時(shí)去除重復(fù)的網(wǎng)址

3庇绽、下載器(DOWLOADER)

用于下載網(wǎng)頁內(nèi)容, 并將網(wǎng)頁內(nèi)容返回給EGINE,下載器是建立在twisted這個(gè)高效的異步模型上的

4橙困、爬蟲(SPIDERS)

SPIDERS是開發(fā)人員自定義的類瞧掺,用來解析responses,并且提取items凡傅,或者發(fā)送新的請(qǐng)求

5辟狈、項(xiàng)目管道(ITEM PIPLINES)

在items被提取后負(fù)責(zé)處理它們,主要包括清理像捶、驗(yàn)證上陕、持久化(比如存到數(shù)據(jù)庫)等操作

下載器中間件(Downloader Middlewares)位于Scrapy引擎和下載器之間,主要用來處理從EGINE傳到DOWLOADER的請(qǐng)求request拓春,已經(jīng)從DOWNLOADER傳到EGINE的響應(yīng)response释簿,

你可用該中間件做以下幾件事:

(1) process a request just before it is sent to the Downloader (i.e. right before Scrapy sends the request to the website);

(2) change received response before passing it to a spider;

(3) send a new Request instead of passing received response to a spider;

(4) pass response to a spider without fetching a web page;

(5) silently drop some requests.

6、爬蟲中間件(Spider Middlewares)

位于EGINE和SPIDERS之間硼莽,主要工作是處理SPIDERS的輸入(即responses)和輸出(即requests)

** Scarpy安裝 **

1庶溶、pip3 install wheel

2煮纵、pip3 install lxml

3、pip3 install pyopenssl

4偏螺、pip3 install pypiwin32

5行疏、安裝twisted框架

下載twisted

http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

安裝下載好的twisted

pip3 install 下載目錄\Twisted-17.9.0-cp36-cp36m-win_amd64.whl

6、pip3 install scrapy

** Scarpy使用 **

1套像、進(jìn)入終端cmd

- scrapy

C:\Users\administortra>scrapy

Scrapy 1.6.0 - no active project

2酿联、創(chuàng)建scrapy項(xiàng)目

1.創(chuàng)建一個(gè)文件夾,專門用于存放scrapy項(xiàng)目

- D:\Scrapy_prject

2.cmd終端輸入命令

scrapy startproject Spider_Project( 項(xiàng)目名)

- 會(huì)在 D:\Scrapy_prject文件夾下會(huì)生成一個(gè)文件

Spider_Project : Scrapy項(xiàng)目文件

3.創(chuàng)建爬蟲程序

cd Spider_Project # 切換到scrapy項(xiàng)目目錄下

# 爬蟲程序名稱 目標(biāo)網(wǎng)站域名

scrapy genspider baidu www.baidu.com # 創(chuàng)建爬蟲程序

3夺巩、啟動(dòng)scrapy項(xiàng)目贞让,執(zhí)行爬蟲程序

# 找到爬蟲程序文件進(jìn)行執(zhí)行

scrapy runspider只能執(zhí)行某個(gè) 爬蟲程序.py

# 切換到爬蟲程序執(zhí)行文件目錄下

- cd D:\Scrapy_prject\Spider_Project\Spider_Project\spiders

- scrapy runspider baidu.py

# 根據(jù)爬蟲名稱找到相應(yīng)的爬蟲程序執(zhí)行

scrapy crawl 爬蟲程序名稱

# 切換到項(xiàng)目目錄下

- cd D:\Scrapy_prject\Spider_Project

- scrapy crawl baidu

2.微信機(jī)器人:

安裝:wxpy 支持 Python 3.4-3.6,以及 2.7 版本

pip3 install -U wxpy

安裝 pillow模塊

pip3 install pillow

安裝 pyecharts模塊

pip3 install pyecharts


$ pip3 install echarts-countries-pypkg

$ pip3 install echarts-china-provinces-pypkg

$ pip3 install echarts-china-cities-pypkg

$ pip3 install echarts-china-counties-pypkg

$ pip3 install echarts-china-misc-pypkg


from?wxpy?import?*

bot?=?Bot()


bot?=?Bot(cache_path=True)?# 必須先登錄過一次以后才可以使用緩存


from?wxpy?import?Bot

from?pyecharts?import?Pie

import?webbrowser


# 實(shí)例化一個(gè)微信機(jī)器人對(duì)象

bot?=?Bot()


# 獲取到微信的所有好友

friends?=?bot.friends()


# 設(shè)定男性\女性\位置性別好友名稱

attr?=?['男朋友',?'女朋友',?'未知']


# 初始化對(duì)應(yīng)好友數(shù)量

value?=?[0,?0,?0]


# 遍歷所有的好友,判斷這個(gè)好友是男性還是女性

for?friend?in?friends:

????if?friend.sex?==?1:

????????value[0]?+=?1

????elif?friend.sex?==?2:

????????value[1]?+=?1

????else:

????????value[2]?+=?1


# 實(shí)例化一個(gè)餅狀圖對(duì)象

pie?=?Pie('hao的好友們!')


# 圖表名稱str柳譬,屬性名稱list喳张,屬性所對(duì)應(yīng)的值list,is_label_show是否現(xiàn)在標(biāo)簽

pie.add('', attr, value, is_label_show=True)


# 生成一個(gè)html文件

pie.render('friends.html')


# 打開html文件

webbrowser.open('friends.html')

from?wxpy?import?*

from?pyecharts?import?Map

import?webbrowser

bot=Bot(cache_path=True)


friends=bot.friends()



area_dic={}#定義一個(gè)字典,用來存放省市以及省市人數(shù)

for?friend?in?friends:

????if?friend.province?not?in?area_dic:

????????area_dic[friend.province]=1

????else:

????????area_dic[friend.province]+=1


attr?=?area_dic.keys()

value?=?area_dic.values()




map?=?Map("好朋友們的地域分布", width=1200, height=600)

map.add(

????"好友地域分布",

????attr,

????value,

????maptype='china',

????is_visualmap=True,?#結(jié)合體VisualMap


)

#is_visualmap -> bool 是否使用視覺映射組件

#

map.render('area.html')



webbrowser.open("area.html")



bot.file_helper.send('lqz say hello')


from?wxpy?import?*

bot=Bot(cache_path=True)


@bot.register()

def?recv_send_msg(recv_msg):

????print('收到的消息:',recv_msg.text)?# recv_msg.text取得文本

????return?'自動(dòng)回復(fù):%s'?%recv_msg.text


# 進(jìn)入Python命令行美澳,讓程序保持運(yùn)行

embed()


from?wxpy?import?*

bot=Bot(cache_path=True)


girl_friend=bot.search('女朋友的備注名稱')[0]

print(girl_friend)


@bot.register()?# 接收從指定好友發(fā)來的消息销部,發(fā)送者即recv_msg.sender為指定好友girl_friend

def?recv_send_msg(recv_msg):

????print('收到的消息:',recv_msg.text)?# recv_msg.text取得文本

????if?recv_msg.sender?==?girl_friend:

????????recv_msg.forward(bot.file_helper,prefix='老婆留言: ')?#在文件傳輸助手里留一份,方便自己忙完了回頭查看

????????ms='老婆最美麗制跟,我對(duì)老婆的愛如滔滔江水舅桩,連綿不絕'

????????print('>>>給老婆回復(fù)的:', ms)

????????return?ms#給老婆回一份


embed()



from?wxpy?import?*

bot=Bot(cache_path=True)


company_group=bot.groups().search('群名字')[0]


boss=company_group.search('老板名字')[0]



@bot.register(chats=company_group)?#接收從指定群發(fā)來的消息,發(fā)送者即recv_msg.sender為組

def?recv_send_msg(recv_msg):

????print('收到的消息:',recv_msg.text)

????if?recv_msg.member?==?boss:

????????#這里不用recv_msg.render 因?yàn)閞ender是群的名字

????????recv_msg.forward(bot.file_helper,prefix='老板發(fā)言: ')

????????return?'老板說的好有道理凫岖,深受啟發(fā)'


import?json

import?requests

from?wxpy?import?*

bot?=?Bot(cache_path=True)


# 調(diào)用圖靈機(jī)器人API江咳,發(fā)送消息并獲得機(jī)器人的回復(fù)

def?auto_reply(text):

????url?=?"http://www.tuling123.com/openapi/api"

????api_key?=?"9df516a74fc443769b233b01e8536a42"

????payload?=?{

????????"key": api_key,

????????"info": text,

????}

????r?=?requests.post(url, data=json.dumps(payload))

????result?=?json.loads(r.content)

????return?"[來自智能機(jī)器人] "?+?result["text"]



@bot.register()

def?forward_message(msg):

????return?auto_reply(msg.text)


embed()


import?json

import?requests

from?wxpy?import?*

bot?=?Bot(cache_path=False)


group=bot.groups().search('群名字')[0]

print(group)


# 調(diào)用圖靈機(jī)器人API逢净,發(fā)送消息并獲得機(jī)器人的回復(fù)

def?auto_reply(text):

????url?=?"http://www.tuling123.com/openapi/api"

????api_key?=?"9d602fe417464cd18beb2083d064bee6"

????payload?=?{

????????"key": api_key,

????????"info": text,

????}

????r?=?requests.post(url, data=json.dumps(payload))

????result?=?json.loads(r.content)

????return?"[來自智能機(jī)器人] "?+?result["text"]



@bot.register(chats=group)

def?forward_message(msg):

????return?auto_reply(msg.text)


embed()



import?requests

from?wxpy?import?*

bot?=?Bot( cache_path=True)


girl_friend=bot.search('名字r')[0]


# 調(diào)用圖靈機(jī)器人API哥放,發(fā)送消息并獲得機(jī)器人的回復(fù)

def?auto_reply(text):

????url?=?"http://www.tuling123.com/openapi/api"

????api_key?=?"申請(qǐng)圖靈機(jī)器人獲取key值放到這里"

????payload?=?{

????????"key": api_key,

????????"info": text,

????}

????r?=?requests.post(url, data=json.dumps(payload))

????result?=?json.loads(r.content)

????return?"[微信測試,請(qǐng)忽略] "?+?result["text"]



@bot.register()

def?forward_message(msg):

????if?msg.sender?==?girl_friend:

????????return?auto_reply(msg.text)


embed()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爹土,一起剝皮案震驚了整個(gè)濱河市甥雕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胀茵,老刑警劉巖社露,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異琼娘,居然都是意外死亡峭弟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門脱拼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞒瘸,“玉大人,你說我怎么就攤上這事熄浓∏槌簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俯在。 經(jīng)常有香客問我竟秫,道長,這世上最難降的妖魔是什么跷乐? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任肥败,我火速辦了婚禮,結(jié)果婚禮上愕提,老公的妹妹穿的比我還像新娘拙吉。我一直安慰自己,他們只是感情好揪荣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布筷黔。 她就那樣靜靜地躺著,像睡著了一般仗颈。 火紅的嫁衣襯著肌膚如雪佛舱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天挨决,我揣著相機(jī)與錄音请祖,去河邊找鬼。 笑死脖祈,一個(gè)胖子當(dāng)著我的面吹牛肆捕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盖高,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼慎陵,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了喻奥?” 一聲冷哼從身側(cè)響起席纽,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撞蚕,沒想到半個(gè)月后润梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甥厦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年纺铭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刀疙。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舶赔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庙洼,到底是詐尸還是另有隱情顿痪,我是刑警寧澤镊辕,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蚁袭,受9級(jí)特大地震影響征懈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揩悄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一卖哎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧删性,春花似錦亏娜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巴帮,卻和暖如春溯泣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背榕茧。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工垃沦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人用押。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓肢簿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜻拨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子池充,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Scrapy 框架 Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架官觅,...
    常偉波閱讀 417評(píng)論 0 0
  • 爬蟲文章 in 簡書程序員專題: like:128-Python 爬取落網(wǎng)音樂 like:127-【圖文詳解】py...
    喜歡吃栗子閱讀 21,753評(píng)論 4 411
  • 背景 部門(東方IC纵菌、圖蟲)業(yè)務(wù)驅(qū)動(dòng)阐污,需要搜集大量圖片資源休涤,做數(shù)據(jù)分析,以及正版圖片維權(quán)笛辟。前期主要用node做爬蟲...
  • 自己和自己生氣功氨,激活自己最邪惡的一面,在鏡子里發(fā)現(xiàn)了另個(gè)你手幢,其實(shí)那就是你自己捷凄,只有水清才能看到原來的渾濁是一灘泥沙...
    魚腐書生閱讀 198評(píng)論 1 0
  • ①早春真調(diào)皮, 它飛進(jìn)了我的眼睛围来。 我看到一只燕子造新房跺涤, 又看到一對(duì)鴛鴦曬太陽匈睁, 還看到一群鴨孑打水一仗。 ②早...
    欣妍cxy閱讀 298評(píng)論 0 5