天才教育網(wǎng)合作機構 > 編程語言培訓機構 > Python培訓機構 >

全國python學習中心

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學習專線 9:00-21:00

位置:編程語言培訓資訊 > Python培訓資訊 > python爬蟲怎么寫,小白如何入門 Python 爬蟲?

python爬蟲怎么寫,小白如何入門 Python 爬蟲?

日期:2021-06-13 15:16:23     瀏覽:100    來源:全國python學習中心
核心提示:不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python爬蟲怎么寫,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python技術筆記匯總(含語法、工具庫

不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python爬蟲怎么寫,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python技術筆記匯總(含語法、工具庫、數(shù)科、爬蟲等),小白如何入門 Python 爬蟲?,超牛逼!Python爬蟲學習的完整路線推薦??。

1.Python技術筆記匯總(含語法、工具庫、數(shù)科、爬蟲等)

自去年五月份在知乎發(fā)布Python技術筆記以來,迄今文章+回答總數(shù)已經(jīng)達到接近200篇。這些內容包括Python基礎語法、數(shù)據(jù)科學、爬蟲、自動化辦公、機器學習、各類工具庫及小技巧。這里把寫過的內容匯總成目錄,方便查詢檢索。1. 學習方法怎么自學python,大概要多久? 為什么自學Python看不進去? 如何系統(tǒng)地學習Python 中 , numpy, scipy, pandas? 哪些 Python 庫讓你相見恨晚? 有什么關于python的書值得閱讀? 請問自學 Python 有必要買課程嗎? Python學到什么程度可以面試工作? 用python進行辦公自動化都需要學習什么知識呢? 你是如何開始能寫 Python 爬蟲? 2. 入門Python初學 Python 需要安裝哪些軟件? 入門python有什么好的書籍推薦? 學Python的學生買電腦,該買什么配置的?初學 Python 者自學 Anaconda 的正確姿勢是什么? 有哪些值得推薦的 Python 開發(fā)工具? Python安裝庫太慢?配置好這個速度飛起 3. Python語法一文搞懂Python匿名函數(shù) 一文搞懂Python文件讀寫 一文搞懂python的map、reduce函數(shù) 一文搞懂Python迭代器和生成器 一文搞懂Python循環(huán)小技巧 一文搞懂Python錯誤和異常 一文搞懂python日期時間處理 如何理解Python中的yield用法? 8個超好用的Python內置函數(shù),提升效率必備 python新手必躺的坑 有了這個Python備忘錄,代碼拿來即用 50個關于IPython的使用技巧,get起來! 使用IPython有哪些好處?用好模塊,對李白詩集進行字頻統(tǒng)計 4. Pandas & Numpy數(shù)據(jù)處理在pandas中使用數(shù)據(jù)透視表 高效的5個pandas函數(shù),你都用過嗎? 6個pandas數(shù)據(jù)處理小技巧,提升效率必備 高效的10個Pandas函數(shù),你都用過了嗎? 如何系統(tǒng)地學習Python 中 , numpy, scipy, pandas? 用python爬蟲爬去數(shù)據(jù)直接用excel處理就好,為什么還用pandas來處理?干貨 | 50題帶你玩轉numpy Numpy基礎20問 Numpy進階之排序小技巧 5. 數(shù)據(jù)可視化 好看的數(shù)據(jù)可視化的圖片是怎么樣做的? 哪些 Python 庫讓你相見恨晚? Python中除了外還有哪些數(shù)據(jù)可視化的庫? 使用pyecharts繪制詞云圖-淘寶商品評論展示 數(shù)據(jù)可視化,Seaborn畫圖原來這么好看 seaborn常用的10種數(shù)據(jù)分析圖表 Superset,基于web的開源BI工具,github三萬star 教你用pyecharts制作交互式?;鶊D,趕快學起來吧! 干貨 | Bokeh交互式數(shù)據(jù)可視化快速入門 6. 空間地理信息聊一聊Python中優(yōu)秀的6個地圖可視化庫 24頁PPT | 如何利用python進行地圖可視化? geopandas,用python分析地理空間數(shù)據(jù)原來這么簡單! 干貨 | 使用pyecharts繪制交互式動態(tài)地圖 7. 爬蟲小白如何入門 Python 爬蟲?selenium入門詳細指南(附淘寶搶購案例) 哪吒票房超復聯(lián)4,100行python代碼抓取豆瓣短評,看看網(wǎng)友怎么說 使用requests爬取python崗位招聘數(shù)據(jù) 電影《毒液》豆瓣短評 爬蟲&分詞&詞云展示 有哪些足不出戶,能用十天左右時間掌握的新技能?干貨!python爬蟲100個入門項目 干貨!python爬蟲100個入門項目 續(xù)8. 自動化辦公用python進行辦公自動化都需要學習什么知識呢?python自動化辦公太難?學這些就夠用了 python讀寫excel等數(shù)據(jù)文件方法匯總 xlwings,讓excel飛起來! python操作CSV和excel,如何來做? 請教下 Python 高手,如何用 Python 自動化操作 Excel?9. 數(shù)據(jù)科學使用python進行數(shù)據(jù)分析工作,要掌握哪些數(shù)學知識?Vaex :突破pandas,快速分析100G大數(shù)據(jù)量 jieba分詞-強大的Python 中文分詞庫 numba,讓python速度提升百倍 最全Python數(shù)據(jù)科學小抄,趕緊收藏吧! 看圖漲知識,一百天搞定機器學習 Python數(shù)據(jù)分析案例 | 臺風最喜歡在我國哪個省市登陸 pandas_profiling :教你一行代碼生成數(shù)據(jù)分析報告 干貨!小白入門Python數(shù)據(jù)科學全教程 深入了解機器學習 ( into ML):線性回歸 機器學習數(shù)學知識,你必須要掌握! Python機器學習·微教程 Keras中的多變量時間序列預測-LSTMs 一文讀懂隨機森林的解釋和實現(xiàn) 機器學習中的數(shù)據(jù)縮放-Python Scikit-Learn實現(xiàn)方法 如何使用Python scikit-learn機器學習庫做分類和回歸預測 機器學習中的泛化能力10. 數(shù)據(jù)庫如何使用python連接數(shù)據(jù)庫?Python sqlite3數(shù)據(jù)庫模塊使用攻略 如何通過Python將CSV文件導入MySQL數(shù)據(jù)庫? python與mysql怎么完成大量的數(shù)據(jù)交互?11. 開發(fā)工具有哪些值得推薦的 Python 開發(fā)工具?這6款Python IDE&代碼編輯器,你都用過嗎? 初學 Python 者自學 Anaconda 的正確姿勢是什么?Jupyter Notebook & Lab快捷鍵大全 15個好用到爆炸的Jupyter Lab插件 泣血整理,Jupyter Notebook最常用的配置技巧 實用 | PyCharm常用快捷鍵整理 ,極其強大的下一代notebook! 12. 其他你用 Python 寫過哪些有趣的腳本?使用Python驗證常見的50個正則表達式利用Python將PDF文檔轉為MP3音頻 pdfkit | 利用python實現(xiàn)html文件轉pdf 干貨 | 解放雙手,用Python實現(xiàn)自動發(fā)送郵件 教你使用Python下載b站等各大主流網(wǎng)站音視頻 教你使用Python制作酷炫二維碼 Github上好玩的50個python項目匯總 (一)Github上好玩的50個python項目匯總 (二) *推薦幾本不錯的Python書。如果大家對自學沒有信心,當然也可以去看視頻課,跟著老師的節(jié)奏學習會更容易入門。有個還不錯的課程,可以瞅瞅。

2.小白如何入門 Python 爬蟲?

本文針對初學者,我會用最簡單的案例告訴你如何入門python爬蟲!想要入門Python 爬蟲首先需要解決四個問題熟悉python編程了解HTML了解網(wǎng)絡爬蟲的基本原理學習使用python爬蟲庫一、你應該知道什么是爬蟲?網(wǎng)絡爬蟲,其實叫作網(wǎng)絡數(shù)據(jù)采集更容易理解。就是通過編程向網(wǎng)絡服務器請求數(shù)據(jù)(HTML表單),然后解析HTML,提取出自己想要的數(shù)據(jù)。歸納為四大步:根據(jù)url獲取HTML數(shù)據(jù)解析HTML,獲取目標信息存儲數(shù)據(jù)重復*步這會涉及到數(shù)據(jù)庫、網(wǎng)絡服務器、HTTP協(xié)議、HTML、數(shù)據(jù)科學、網(wǎng)絡安全、圖像處理等非常多的內容。但對于初學者而言,并不需要掌握這么多。二、python要學習到什么程度如果你不懂python,那么需要先學習python這門非常easy的語言(相對其它語言而言)。編程語言基礎語法無非是數(shù)據(jù)類型、數(shù)據(jù)結構、運算符、邏輯結構、函數(shù)、文件IO、錯誤處理這些,學起來會顯枯燥但并不難。剛開始入門爬蟲,你甚至不需要去學習python的類、多線程、模塊之類的略難內容。找一個面向初學者的教材或者網(wǎng)絡教程,花個十幾天功夫,就能對python基礎有個三四分的認識了,這時候你可以玩玩爬蟲嘍!先說下python入門,實在是太容易了,因為語法簡單,思維與人類的思維很相近。入門的時候,別整天想著看很多資料,網(wǎng)上各種找,*都留在了收藏夾吃灰。其實對于剛接觸編程的小白而言,最容易卡在安裝Python環(huán)境和實操代碼這一步。建議一開始先試試一些學習網(wǎng)站的免費課程,大概了解下Python的基礎知識,打好扎實的基礎后再上手學爬蟲。如果毫無基礎可言,甚至不知道如何下載Python,那我推薦下面這個課程↓ 不用安裝環(huán)境,直接在網(wǎng)頁上學習代碼實操,基礎知識配實戰(zhàn),這樣學起來更容易: 解析數(shù)據(jù),因為數(shù)據(jù)藏在HTML里。學習HTML并不難,它并不是編程語言,你只需要熟悉它的標記規(guī)則,這里大致講一下。HTML標記包含標簽(及其屬性)、基于字符的數(shù)據(jù)類型、字符引用和實體引用等幾個關鍵部分。HTML標簽是最常見的,通常成對出現(xiàn),比如

。這些成對出現(xiàn)的標簽中,*個標簽是開始標簽,第二個標簽是結束標簽。兩個標簽之間為元素的內容(文本、圖像等),有些標簽沒有內容,為空元素,如。以下是一個經(jīng)典的Hello World程序的例子: This is a title

Hello world!

HTML文檔由嵌套的HTML元素構成。它們用HTML標簽表示,包含于尖括號中,如

[56]在一般情況下,一個元素由一對標簽表示:“開始標簽”

與“結束標簽”

。元素如果含有文本內容,就被放置在這些標簽之間。四、了解python網(wǎng)絡爬蟲的基本原理在編寫python爬蟲程序時,只需要做以下兩件事:發(fā)送GET請求,獲取HTML解析HTML,獲取數(shù)據(jù)這兩件事,python都有相應的庫幫你去做,你只需要知道如何去用它們就可以了。五、用python庫爬取百度首頁標題和圖片首先,發(fā)送HTML數(shù)據(jù)請求可以使用python內置庫urllib,該庫有一個urlopen函數(shù),可以根據(jù)url獲取HTML文件,這里嘗試獲取百度首頁“ 導入urllib庫的urlopen函數(shù) from urllib.request import urlopen # 發(fā)出請求,獲取html html = urlopen(" # 獲取的html內容是字節(jié),將其轉化為字符串 html_text = bytes.decode(html.read()) # 打印html內容 print(html_text)看看效果:輸出html內容部分截取我們看一下真正百度首頁html是什么樣的,如果你用的是谷歌瀏覽器,在百度主頁打開設置>更多工具>開發(fā)者工具,點擊element,就可以看到了:在谷歌瀏覽器中查看HTML對比一下你就會知道,剛才通過python程序獲取到的HTML和網(wǎng)頁中的一樣!獲取了HTML之后,接下就要解析HTML了,因為你想要的文本、圖片、視頻都藏在HTML里,你需要通過某種手段提取需要的數(shù)據(jù)。python同樣提供了非常多且強大的庫來幫助你解析HTML,這里以著名的python庫為工具來解析上面已經(jīng)獲取的HTML。是第三方庫,需要安裝使用。在命令行用pip安裝就可以了:pip install 會將HTML內容轉換成結構化內容,你只要從結構化標簽里面提取數(shù)據(jù)就OK了:比如,我想獲取百度首頁的標題“百度一下,我就知道”,怎么辦呢?這個標題是被兩個標簽套住的,一個是一級標簽,另一個是二級標簽<title>,所以只要從標簽中取出信息就可以了# 導入urlopen函數(shù) from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 打印標題 print(title)看看結果:這樣就搞定了,成功提取出百度首頁的標題。如果我想要下載百度首頁logo圖片呢?*步先獲取該網(wǎng)頁所有圖片標簽和url,這個可以使用的findAll方法,它可以提取包含在標簽里的信息。一般來說,HTML里所有圖片信息會在“img”標簽里,所以我們通過findAll("img")就可以獲取到所有圖片的信息了。# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 使用find_all函數(shù)獲取所有圖片的信息 pic_info = obj.find_all('img') # 分別打印每個圖片的信息 for i in pic_info: print(i)看看結果:打印出了所有圖片的屬性,包括class(元素類名)、src(鏈接地址)、長寬高等。其中有百度首頁logo的圖片,該圖片的class(元素類名)是index-logo-src。[<img class="index-logo-src" height="129" hidefocus="true" src="http://www.baidu.com/img/bd_logo1.png" usemap="#mp" width="270"/>, <img alt="到百度首頁" class="index-logo-src" src="http://www.baidu.com/img/baidu_jgylogo3.gif" title="到百度首頁"/>]可以看到圖片的鏈接地址在src這個屬性里,我們要獲取圖片鏈接地址:# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 打印鏈接 print(logo_url)結果:獲取地址后,就可以用urllib.函數(shù)下載logo圖片了# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 導入函數(shù),用于下載圖片 from urllib.request import # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 使用下載圖片 (logo_url, 'logo.png')最終圖片保存在'logo.png'六、結語本文用爬取百度首頁標題和logo圖片的案例,講解了python爬蟲的基本原理以及相關python庫的使用,這是比較初級的爬蟲知識,還有很多優(yōu)秀的python爬蟲庫和框架等待后續(xù)去學習。房子一層一層蓋,知識一點一點學。剛接觸Python的同學還是要打好基礎,自己上手實操↓ 話不多說,上干貨!最近發(fā)現(xiàn)了一個接近免費的Python課程,在網(wǎng)頁上教學基礎知識+實操代碼,比較適合小白學習,比找資料自學高效多了。*分享給你們,點擊下面鏈接就可以領?。?/p><h3>3.超牛逼!Python爬蟲學習的完整路線推薦</h3><p>數(shù)據(jù)是決策的原材料,高質量的數(shù)據(jù)價值不菲,如何挖掘原材料成為互聯(lián)網(wǎng)時代的先驅,掌握信息的源頭,就能比別人更快一步。大數(shù)據(jù)時代,互聯(lián)網(wǎng)成為大量信息的載體,機械的復制粘貼不再實用,不僅耗時費力還極易出錯,這時爬蟲的出現(xiàn)解放了大家的雙手,以其高速爬行、定向抓取資源的能力獲得了大家的青睞。爬蟲變得越來越流行,不僅因為它能夠快速爬取海量的數(shù)據(jù),更因為有python這樣簡單易用的語言使得爬蟲能夠快速上手。對于小白來說,爬蟲可能是一件非常復雜、技術門檻很高的事情,但掌握正確的方法,在短時間內做到能夠爬取主流網(wǎng)站的數(shù)據(jù),其實非常容易實現(xiàn),但建議你從一開始就要有一個具體的目標。在目標的驅動下,你的學習才會更加精準和高效。那些所有你認為必須的前置知識,都是可以在完成目標的過程中學到的?;趐ython爬蟲,我們整理了一個完整的學習框架:篩選和甄別學習哪些知識,在哪里去獲取資源是許多初學者共同面臨的問題。接下來,我們將學習框架進行拆解,分別對每個部分進行詳細介紹和推薦一些相關資源,告訴你學什么、怎么學、在哪里學。爬蟲簡介爬蟲是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。這個定義看起來很生硬,我們換一種更好理解的解釋:我們作為用戶獲取網(wǎng)絡數(shù)據(jù)的方式是瀏覽器提交請求->下載網(wǎng)頁代碼->解析/渲染成頁面;而爬蟲的方式是模擬瀏覽器發(fā)送請求->下載網(wǎng)頁代碼->只提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中。爬蟲與我們的區(qū)別是,爬蟲程序只提取網(wǎng)頁代碼中對我們有用的數(shù)據(jù),并且爬蟲抓取速度快,量級大。隨著數(shù)據(jù)的規(guī)模化,爬蟲獲取數(shù)據(jù)的高效性能越來越突出,能夠做的事情越來越多:市場分析:電商分析、商圈分析、一二級市場分析等市場監(jiān)控:電商、新聞、房源監(jiān)控等商機發(fā)現(xiàn):招投標情報發(fā)現(xiàn)、客戶資料發(fā)掘、企業(yè)客戶發(fā)現(xiàn)等進行爬蟲學習,首先要懂得是網(wǎng)頁,那些我們肉眼可見的光鮮亮麗的網(wǎng)頁是由HTML、css、等網(wǎng)頁源碼所支撐起來的。這些源碼被瀏覽器所識別轉換成我們看到的網(wǎng)頁,這些源碼里面必定存在著很多規(guī)律,我們的爬蟲就能按照這樣的規(guī)律來爬取需要的信息。無規(guī)矩不成方圓,Robots協(xié)議就是爬蟲中的規(guī)矩,它告訴爬蟲和搜索引擎哪些頁面可以抓取,哪些不可以抓取。通常是一個叫作robots.txt的文本文件,放在網(wǎng)站的根目錄下。輕量級爬蟲“獲取數(shù)據(jù)——解析數(shù)據(jù)——存儲數(shù)據(jù)”是爬蟲的三部曲,大部分爬蟲都是按這樣的流程來進行,這其實也是模擬了我們使用瀏覽器獲取網(wǎng)頁信息的過程。1、獲取數(shù)據(jù)爬蟲*步操作就是模擬瀏覽器向服務器發(fā)送請求,基于python,你不需要了解從數(shù)據(jù)的實現(xiàn),HTTP、TCP、IP的網(wǎng)絡傳輸結構,一直到服務器響應和應達的原理,因為python提供了功能齊全的類庫來幫我們完成這些請求。Python自帶的標準庫urllib2使用的較多,它是python內置的HTTP請求庫,如果你只進行基本的爬蟲網(wǎng)頁抓取,那么urllib2足夠用。Requests的slogen是“Requests is the only Non-GMO HTTP library for Python, safe for ”,相對urllib2,requests使用起來確實簡潔很多,并且自帶json解析器。如果你需要爬取異步加載的動態(tài)網(wǎng)站,可以學習瀏覽器抓包分析真實請求或者學習Selenium來實現(xiàn)自動化。對于爬蟲來說,在能夠爬取到數(shù)據(jù)地前提下當然是越快越好,顯然傳統(tǒng)地同步代碼不能滿足我們對速度地需求。(ps:據(jù)國外數(shù)據(jù)統(tǒng)計:正常情況下我們請求同一個頁面 100次的話,最少也得花費 30秒,但使用異步請求同一個頁面 100次的話,只需要要 3秒左右。)aiohttp是你值得擁有的一個庫,aiohttp的異步操作借助于async/await關鍵字的寫法變得更加簡潔,架構更加清晰。使用異步請求庫進行數(shù)據(jù)抓取時,會大大提高效率。你可以根據(jù)自己的需求選擇合適的請求庫,但建議先從python自帶的urllib開始,當然,你可以在學習時嘗試所有的方式,以便更了解這些庫的使用。推薦請求庫資源:urllib2文檔: : 、JSON、XML等格式。解析庫的使用等價于在HTML中查找需要的信息時時使用正則,能夠更加快捷地定位到具體的元素獲取相應的信息。Css選擇器是一種快速定位元素的方法。Pyqurrey使用lxml解析器進行快速在xml和html文檔上操作,它提供了和jQuery類似的語法來解析HTML文檔,支持CSS選擇器,使用非常方便。Beautiful Soup是借助網(wǎng)頁的結構和屬性等特性來解析網(wǎng)頁的工具,能自動轉換編碼。支持Python標準庫中的HTML解析器,還支持一些第三方的解析器。Xpath最初是用來搜尋XML文檔的,但是它同樣適用于HTML文檔的搜索。它提供了超過 100 個內建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值、日期和時間比較、節(jié)點和 QName 處理、序列處理、邏輯值等等,并且XQuery和XPointer都構建于XPath基礎上。Re正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。個人認為前端基礎比較扎實的,用pyquery是最方便的,也不錯,re速度比較快,但是寫正則比較麻煩。當然了,既然用python,肯定還是自己用著方便*。推薦解析器資源:pyquery 作為關系型數(shù)據(jù)庫的代表,擁有較為成熟的體系,成熟度很高,可以很好地去存儲一些數(shù)據(jù),但在在海量數(shù)據(jù)處理的時候效率會顯著變慢,已然滿足不了某些大數(shù)據(jù)的處理要求。MongoDB已經(jīng)流行了很長一段時間,相對于MySQL ,MongoDB可以方便你去存儲一些非結構化的數(shù)據(jù),比如各種評論的文本,圖片的鏈接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。因為這里要用到的數(shù)據(jù)庫知識其實非常簡單,主要是數(shù)據(jù)如何入庫、如何進行提取,在需要的時候再學習就行。Redis是一個不折不扣的內存數(shù)據(jù)庫,Redis 支持的數(shù)據(jù)結構豐富,包括hash、set、list等。數(shù)據(jù)全部存在內存,訪問速度快,可以存儲大量的數(shù)據(jù),一般應用于分布式爬蟲的數(shù)據(jù)存儲當中。推薦數(shù)據(jù)庫資源:mysql文檔 redis文檔 selector 能夠方便地解析 response,然而它最讓人驚喜的還是它超高的性能,讓你可以將爬蟲工程化、模塊化。學會scrapy,你可以自己去搭建一些爬蟲框架,你就基本具備爬蟲工程師的思維了。*Pyspider作為人氣飆升的國內大神開發(fā)的框架,滿足了絕大多數(shù)Python爬蟲的需求 —— 定向抓取,結構化化解析。它能在瀏覽器界面上進行腳本的編寫,功能的調度和爬取結果的實時查看,后端使用常用的數(shù)據(jù)庫進行爬取結果的存儲等。其功能強大到更像一個產(chǎn)品而不是一個框架。這是三個最有代表性的爬蟲框架,它們都有遠超別人的有點,比如Nutch天生的搜索引擎解決方案、Pyspider產(chǎn)品級的WebUI、Scrapy最靈活的定制化爬取。建議先從最接近爬蟲本質的框架scary學起,再去接觸人性化的Pyspider,為搜索引擎而生的Nutch。推薦爬蟲框架資源:Nutch文檔 scary文檔 pyspider文檔 爬取基本數(shù)據(jù)已經(jīng)沒有問題,還能使用框架來面對一寫較為復雜的數(shù)據(jù),此時,就算遇到反爬,你也掌握了一些反反爬技巧。你的瓶頸會集中到爬取海量數(shù)據(jù)的效率,這個時候相信你會很自然地接觸到一個很厲害的名字:分布式爬蟲。分布式這個東西,聽起來很恐怖,但其實就是利用多線程的原理將多臺主機組合起來,共同完成一個爬取任務,需要你掌握 Scrapy +Redis+MQ+Celery這些工具。Scrapy 前面我們說過了,用于做基本的頁面爬取, Redis 則用來存儲要爬取的網(wǎng)頁隊列,也就是任務隊列。scarpy-redis就是用來在scrapy中實現(xiàn)分布式的組件,通過它可以快速實現(xiàn)簡單分布式爬蟲程序。由于在高并發(fā)環(huán)境下,由于來不及同步處理,請求往往會發(fā)生堵塞,通過使用消息隊列MQ,我們可以異步處理請求,從而緩解系統(tǒng)的壓力。RabbitMQ本身支持很多的協(xié)議:AMQP,XMPP, SMTP,STOMP,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。Scrapy-rabbitmq-link是可以讓你從RabbitMQ 消息隊列中取到URL并且分發(fā)給Scrapy spiders的組件。Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng)。支持 RabbitMQ、Redis 甚至其他數(shù)據(jù)庫系統(tǒng)作為其消息代理中間件, 在處理異步任務、任務調度、處理定時任務、分布式調度等場景表現(xiàn)良好。所以分布式爬蟲只是聽起來有些可怕,也不過如此。當你能夠寫分布式的爬蟲的時候,那么你可以去嘗試打造一些基本的爬蟲架構了,實現(xiàn)一些更加自動化的數(shù)據(jù)獲取。推薦分布式資源:scrapy-redis文檔 </p><p>就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓機構,進行專業(yè)和系統(tǒng)的學習。</p></div> </div> <div class="yiwbrm9" id="content" class="content"> <div id="3acio0c" class="kccontentss"> <h3> <ul class="navss" role="tablist"> <li id="jnupxkf" class="active"><a href="#Section2" data-toggle="tab">課程介紹</a></li> </ul> </h3> <script type="text/javascript" src="https://fb5.fangxinxue.net/plan/js/202105/27/25.js"></script> </div> <p class="class-pp">本文由 <a href="http://bceiu.cn/jigou/ms-qgpythonxxzx/" target="_blank" title="全國python學習中心" style="color:#FF6700;">全國python學習中心</a> 整理發(fā)布。更多培訓課程,學習資訊,課程優(yōu)惠,課程開班,學校地址等學校信息,可以留下你的聯(lián)系方式,讓課程老師跟你詳細解答:<br> 咨詢電話:<strong>400-850-8622 </strong> </p> <div id="u003nxs" class="wrapper_new"> <span style="width: 100%;float: left;padding-top: 20px;">如果本頁不是您要找的課程,您也可以百度查找一下:</span> <a id="result_logo"><img class="index-logo-src" src="https://imgs.edutt.com/skin/xxxx/image/result.png" alt="到百度首頁" title="到百度首頁"></a> <span id="a8nif38" class="bg s_ipt_wr quickdelete-wrap"> <span id="xe1r7o8" class="soutu-btn"></span> <input id="kw" name="wd" class="s_ipt" value="Python培訓" maxlength="255" autocomplete="off"> <span id="dhmsq9r" class="bg s_btn_wr"><a target="_blank" rel="nofollow"><input type="submit" id="su" value="百度一下" class="bg s_btn"></a></span> </span> </div> </div> <div id="eh82wjx" class="relevant"> <div id="iotrfp8" class="title-B3"><span>相關文章</span></div> <div id="r558svi" class="class-list-right_con classListCon_01"> <div id="mi3n3s4" class="clearfix"> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_1559309/" title="python爬蟲怎么學,如何有系統(tǒng)地學習Python爬蟲?"> <div id="znznsc6" class="fr"> <div id="juinbty" class="h_title">python爬蟲怎么學,如何有系統(tǒng)地學習Python爬蟲?</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_1669745/" title="python什么寫爬蟲,python 怎么寫爬蟲"> <div id="caorepu" class="fr"> <div id="pkqlzep" class="h_title">python什么寫爬蟲,python 怎么寫爬蟲</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_1879544/" title="python爬蟲好學么,大家都知道python爬蟲,但是好學嗎?初學又該怎么學習爬蟲呢?"> <div id="2pvlqmp" class="fr"> <div id="kdbpviq" class="h_title">python爬蟲好學么,大家都知道python爬蟲,但是好學嗎?初學又該怎么學習爬蟲呢?</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_3091109/" title="石家莊長安區(qū)爬蟲培訓學校(python爬蟲*景怎么樣)"> <div id="vzesnyt" class="fr"> <div id="tf74zua" class="h_title">石家莊長安區(qū)爬蟲培訓學校(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_3127722/" title="石家莊長安區(qū)Python爬蟲培訓學校(python爬蟲*景怎么樣)"> <div id="gcs00yi" class="fr"> <div id="awwzu5j" class="h_title">石家莊長安區(qū)Python爬蟲培訓學校(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_3210022/" title="石家莊長安區(qū)學Python爬蟲哪里好(python爬蟲*景怎么樣)"> <div id="6znsgmu" class="fr"> <div id="ko58tzx" class="h_title">石家莊長安區(qū)學Python爬蟲哪里好(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_3213102/" title="石家莊長安區(qū)學Python爬蟲哪個好(python爬蟲*景怎么樣)"> <div id="gua11vq" class="fr"> <div id="aeob8ik" class="h_title">石家莊長安區(qū)學Python爬蟲哪個好(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_3255723/" title="石家莊長安區(qū)Python爬蟲培訓費用(python爬蟲*景怎么樣)"> <div id="fazhnsy" class="fr"> <div id="pw5bjxl" class="h_title">石家莊長安區(qū)Python爬蟲培訓費用(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_7618125/" title="python怎么寫爬蟲"> <div id="agwkfty" class="fr"> <div id="zfa1lyt" class="h_title">python怎么寫爬蟲</div> </div> </a> </div> </div> </div> <br/> </div> </div> <aside class="class-list-right fr"> <style> .countdown span{font-size: 32px;} .ts_box{width:400px;height:80px;line-height:80px;color:#fff;position:fixed;left:calc((100% - 400px) / 2);top:400px;background:rgba(0,0,0,0.8);text-align:center;z-index:999999;display:none;} .apTopDiv { width: 400px; height: 430px; display: none; } </style> <div id="k3bouhc" class="apTopDiv" style="display: none;"></div> <div id="p2trqlt" class="course-right"> <div id="zdy5zm5" class="contact" style="z-index:999;"> <div id="taiwupv" class="test-title">在線報名</div> <div id="uiywc0y" class="note">免費體驗課開辦倒計時</div> <div id="ocinrou" class="countdown"><span id="zxguhky" class="JS-shi">11</span>:<span id="tou7tgw" class="JS-fen">59</span>:<span id="z1yupdb" class="JS-miao">38</span></div> <form name="bmform" id="bmform" method="post"> <input name="kcname" value="python爬蟲怎么寫,小白如何入門 Python 爬蟲?" type="hidden"> <input name="itemid" value="1631606" type="hidden"> <input name="linkurl" value="http://bceiu.cn/news_show_1631606" type="hidden"> <input name="uname" value="qgpythonxxzx" type="hidden"> <input name="isvip" value="1" type="hidden"> <ul> <li><input type="text" name="truename" placeholder="請輸入您的姓名" id="contact-name"/></li> <li><input type="text" name="mobile" placeholder="請輸入您的電話" id="contact-phone"/></li> </ul> <button type="button" id="sub">預約試聽</button> </form> <div id="amj33t9" class="note more">稍后會有專業(yè)老師給您回電,請保持手機暢通</div> <div id="mcythjc" class="contact-info"> <div id="fiob1be" class="tel">咨詢電話:400-850-8622</div> <a target="_blank"><button class="btn"></button></a> </div> </div> </div> <div id="073pjek" class="ts_box" id="error1">姓名不能為空</div> <div id="qowvdye" class="ts_box" id="error2">手機號格式錯誤</div> <script type="text/javascript"> var s = 0; $("#sub").click(function(){ var l; l = $("#contact-name").val().length; if(l < 2) { $("#error1").show(); setTimeout(function(){$("#error1").hide();},2000); $("#contact-name").focus(); return false; } var mobile = $.trim($("#contact-phone").val()); if(mobile == "") { $("#error2").show(); setTimeout(function(){$("#error2").hide();},2000); $("#contact-phone").focus(); return false; } if(!isPhone(mobile)) { $("#error2").show(); $("#contact-phone").focus(); return false; } if(s==1){ alert('不要重復提交'); return false; } s = 1; var url = "http://bceiu.cn/api/baoming.php"; $.post(url, $('#bmform').serialize(), function(data){ if(data==1) { alert('報名成功'); }else { alert(data); } }); }); function isPhone(strRegex) { var reg = /^1(3|4|5|6|7|8|9)\d{9}$/; return reg.test(strRegex); } </script> <script> (function () { var shi = document.getElementsByClassName('JS-shi')[0]; var fen = document.getElementsByClassName('JS-fen')[0]; var miao = document.getElementsByClassName('JS-miao')[0]; var endTime = Date.now() + 86400000; var interval = null; interval = setInterval(function () { var syhm = endTime - Date.now(); // 剩余毫秒 if (syhm >= 0) { shi.innerText = checkTime(Math.floor(syhm / 1000 / 60 / 60 % 24)); fen.innerText = checkTime(Math.floor(syhm / 1000 / 60 % 60)); miao.innerText = checkTime(Math.floor(syhm / 1000 % 60)); } else { clearInterval(interval); } }, 0); })(); function checkTime(i) { //將0-9的數(shù)字前面加上0,例1變?yōu)?1 if (i < 10) { i = "0" + i; } return i; } </script> <div id="xs18adw" class="mgt" style="position: relative;margin-top: 20px;"> <div id="vznl5gb" class="classList_tit" style="height:30px;margin-top:20px;margin-bottom:20px;"> <ul class="clearfix"> <li id="pflgwkf" class="li01 active">作者最新文章</li> </ul> </div> </div> <div id="mk7nmja" class="class-list-right_con classListCon_01"> <div id="qwf581r" class="clearfix"> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_1821792/" title="python好不好,鄭多燕減肥操中文版全集下載"> <div id="e3q11nv" class="fr"> <div id="mb7ou8i" class="h_title">python好不好,鄭多燕減肥操中文版全集下載</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_7638926/" title="怎么升級python"> <div id="j1e3qwb" class="fr"> <div id="cjoxwy5" class="h_title">怎么升級python</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_7638439/" title="python實訓"> <div id="36lgthm" class="fr"> <div id="u0dqe33" class="h_title">python實訓</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_7637871/" title="python學需要什么"> <div id="eid2hci" class="fr"> <div id="ulb5vto" class="h_title">python學需要什么</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://bceiu.cn/news_show_7619570/" title="python網(wǎng)站"> <div id="0akq0mc" class="fr"> <div id="c3ojf7d" class="h_title">python網(wǎng)站</div> <span>來源:最新文章</span> </div> </a> </div> </div> </aside> </section> <footer class="width_all qinxue-footer"> <div id="16kfqwc" class="width_main qinxue-p"> <p class="qx-p1"> 全國python學習中心  |  <a href="http://bceiu.cn/jigou/ms-qgpythonxxzx/about.html">關于我們</a>  |  <a href="http://bceiu.cn/jigou/ms-qgpythonxxzx/contact.html" >聯(lián)系我們</a></p> <p class="qx-p2"> 全國python學習中心2024@版權所有</p> <p class="qx-p3"> <a href="http://bceiu.cn/jg.htm" target="_blank" title="新入駐機構">新機構</a>    <a href="http://bceiu.cn/ke.htm" target="_blank" title="新發(fā)布課程">新課程</a>    <a href="http://bceiu.cn/xin.htm" target="_blank" title="新發(fā)布資訊">新文章</a>    <a href="http://bceiu.cn/wen.htm" target="_blank" title="新發(fā)布資訊">新問答</a>    <a href="http://bceiu.cn/peixun/" target="_blank" title="新發(fā)布資訊">新專題</a>    <a href="http://bceiu.cn/zhishi/" target="_blank" title="新發(fā)布資訊">新聚合</a>    <a href="http://bceiu.cn/sitemap/" target="_blank">網(wǎng)站地圖</a> </p> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?da6504ecb332fc4923ccf14d225be14d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); $(function() { $(".yh_conct").hover(function() { $(".yh_conct").css("right", "5px"); $(".yh_bar .yh_ercode").css('height', '200px'); }, function() { $(".yh_conct").css("right", "-127px"); $(".yh_bar .yh_ercode").css('height', '53px'); }); $(".yh_top").click(function() { $("html,body").animate({ 'scrollTop': '0px' }, 300) }); }); $(function(){ $("img").lazyload({ placeholder : "https://img.alicdn.com/imgextra/i2/411980463/O1CN0139i42e1FI5u6RlBgQ_!!411980463.png", //用圖片提前占位 effect: "fadeIn", threshold: 200, failurelimit : 20 }); }); GoMobile('https://m.edutt.com/news_show_1631606/'); </script> <script>(function() {var _53code = document.createElement("script");_53code.src = "https://tb.53kf.com/code/code/20422cdb9dfb57a3b487b335ad2f404d0/1";var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(_53code, s);})();</script> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://bceiu.cn/" title="在线播放国产精品一品道综合">在线播放国产精品一品道综合</a> <div class="friend-links"> </div> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="fbnmo" class="pl_css_ganrao" style="display: none;"><pre id="fbnmo"><acronym id="fbnmo"><tt id="fbnmo"><pre id="fbnmo"></pre></tt></acronym></pre><form id="fbnmo"></form><th id="fbnmo"></th><sup id="fbnmo"><tfoot id="fbnmo"><pre id="fbnmo"><menu id="fbnmo"></menu></pre></tfoot></sup><ins id="fbnmo"></ins><em id="fbnmo"><s id="fbnmo"><span id="fbnmo"><tbody id="fbnmo"></tbody></span></s></em><pre id="fbnmo"></pre><output id="fbnmo"><var id="fbnmo"><thead id="fbnmo"><output id="fbnmo"></output></thead></var></output><ul id="fbnmo"><table id="fbnmo"><wbr id="fbnmo"><ul id="fbnmo"></ul></wbr></table></ul><strong id="fbnmo"></strong><span id="fbnmo"></span><small id="fbnmo"><dfn id="fbnmo"><span id="fbnmo"><ins id="fbnmo"></ins></span></dfn></small><s id="fbnmo"></s><abbr id="fbnmo"><fieldset id="fbnmo"><center id="fbnmo"><video id="fbnmo"></video></center></fieldset></abbr><rp id="fbnmo"></rp><em id="fbnmo"><th id="fbnmo"><i id="fbnmo"><em id="fbnmo"></em></i></th></em><ul id="fbnmo"></ul><var id="fbnmo"></var><form id="fbnmo"></form><form id="fbnmo"><output id="fbnmo"><var id="fbnmo"><thead id="fbnmo"></thead></var></output></form><var id="fbnmo"><form id="fbnmo"><output id="fbnmo"><var id="fbnmo"></var></output></form></var><samp id="fbnmo"><tbody id="fbnmo"><s id="fbnmo"><button id="fbnmo"></button></s></tbody></samp><form id="fbnmo"></form><output id="fbnmo"></output><form id="fbnmo"><output id="fbnmo"><var id="fbnmo"><form id="fbnmo"></form></var></output></form><abbr id="fbnmo"></abbr><label id="fbnmo"><sub id="fbnmo"><rp id="fbnmo"><label id="fbnmo"></label></rp></sub></label><center id="fbnmo"></center><legend id="fbnmo"><span id="fbnmo"><small id="fbnmo"><legend id="fbnmo"></legend></small></span></legend><menu id="fbnmo"></menu><i id="fbnmo"></i><tt id="fbnmo"></tt><form id="fbnmo"><dfn id="fbnmo"><var id="fbnmo"><meter id="fbnmo"></meter></var></dfn></form><samp id="fbnmo"></samp><code id="fbnmo"><tr id="fbnmo"><output id="fbnmo"><var id="fbnmo"></var></output></tr></code><kbd id="fbnmo"></kbd><thead id="fbnmo"></thead><sup id="fbnmo"><thead id="fbnmo"><video id="fbnmo"><sup id="fbnmo"></sup></video></thead></sup><abbr id="fbnmo"><fieldset id="fbnmo"><center id="fbnmo"><optgroup id="fbnmo"></optgroup></center></fieldset></abbr><acronym id="fbnmo"></acronym><output id="fbnmo"><form id="fbnmo"><label id="fbnmo"><sub id="fbnmo"></sub></label></form></output><dl id="fbnmo"></dl><abbr id="fbnmo"><fieldset id="fbnmo"><center id="fbnmo"><optgroup id="fbnmo"></optgroup></center></fieldset></abbr><dfn id="fbnmo"><em id="fbnmo"><s id="fbnmo"><samp id="fbnmo"></samp></s></em></dfn><i id="fbnmo"><pre id="fbnmo"><menu id="fbnmo"><dl id="fbnmo"></dl></menu></pre></i><sup id="fbnmo"></sup><dd id="fbnmo"><abbr id="fbnmo"><fieldset id="fbnmo"><center id="fbnmo"></center></fieldset></abbr></dd><pre id="fbnmo"></pre><em id="fbnmo"><s id="fbnmo"><samp id="fbnmo"><small id="fbnmo"></small></samp></s></em><menu id="fbnmo"></menu><noframes id="fbnmo"><rt id="fbnmo"><tr id="fbnmo"><small id="fbnmo"></small></tr></rt></noframes><abbr id="fbnmo"><fieldset id="fbnmo"><center id="fbnmo"><abbr id="fbnmo"></abbr></center></fieldset></abbr><dfn id="fbnmo"><i id="fbnmo"><thead id="fbnmo"><dfn id="fbnmo"></dfn></thead></i></dfn><tr id="fbnmo"></tr><menuitem id="fbnmo"><small id="fbnmo"><legend id="fbnmo"><menuitem id="fbnmo"></menuitem></legend></small></menuitem><dfn id="fbnmo"><i id="fbnmo"><meter id="fbnmo"><dfn id="fbnmo"></dfn></meter></i></dfn><xmp id="fbnmo"><table id="fbnmo"><dl id="fbnmo"><sup id="fbnmo"></sup></dl></table></xmp><rp id="fbnmo"></rp><menu id="fbnmo"><dl id="fbnmo"><em id="fbnmo"><label id="fbnmo"></label></em></dl></menu><rp id="fbnmo"><pre id="fbnmo"><sub id="fbnmo"><rp id="fbnmo"></rp></sub></pre></rp><wbr id="fbnmo"><ul id="fbnmo"><table id="fbnmo"><wbr id="fbnmo"></wbr></table></ul></wbr><fieldset id="fbnmo"></fieldset><button id="fbnmo"><nobr id="fbnmo"><acronym id="fbnmo"><menuitem id="fbnmo"></menuitem></acronym></nobr></button><small id="fbnmo"></small><thead id="fbnmo"><optgroup id="fbnmo"><sup id="fbnmo"><thead id="fbnmo"></thead></sup></optgroup></thead><span id="fbnmo"><small id="fbnmo"><legend id="fbnmo"><menuitem id="fbnmo"></menuitem></legend></small></span><strong id="fbnmo"></strong><menu id="fbnmo"></menu><ins id="fbnmo"><optgroup id="fbnmo"><menu id="fbnmo"><dd id="fbnmo"></dd></menu></optgroup></ins><tr id="fbnmo"><noframes id="fbnmo"><rt id="fbnmo"><delect id="fbnmo"></delect></rt></noframes></tr><delect id="fbnmo"><small id="fbnmo"><tfoot id="fbnmo"><delect id="fbnmo"></delect></tfoot></small></delect><dl id="fbnmo"><sup id="fbnmo"><table id="fbnmo"><dl id="fbnmo"></dl></table></sup></dl><acronym id="fbnmo"><tt id="fbnmo"><pre id="fbnmo"><acronym id="fbnmo"></acronym></pre></tt></acronym><strike id="fbnmo"><button id="fbnmo"><tbody id="fbnmo"><xmp id="fbnmo"></xmp></tbody></button></strike><button id="fbnmo"></button><thead id="fbnmo"></thead><sup id="fbnmo"><rp id="fbnmo"><label id="fbnmo"><sub id="fbnmo"></sub></label></rp></sup><menu id="fbnmo"></menu><thead id="fbnmo"><output id="fbnmo"><button id="fbnmo"><thead id="fbnmo"></thead></button></output></thead><ul id="fbnmo"></ul><tt id="fbnmo"><pre id="fbnmo"><acronym id="fbnmo"><tt id="fbnmo"></tt></acronym></pre></tt><tr id="fbnmo"></tr><dfn id="fbnmo"><dl id="fbnmo"><form id="fbnmo"><dfn id="fbnmo"></dfn></form></dl></dfn><video id="fbnmo"><sup id="fbnmo"><big id="fbnmo"><delect id="fbnmo"></delect></big></sup></video><rt id="fbnmo"></rt><input id="fbnmo"></input><strong id="fbnmo"></strong><xmp id="fbnmo"></xmp><fieldset id="fbnmo"></fieldset><sup id="fbnmo"></sup><dfn id="fbnmo"></dfn><form id="fbnmo"><label id="fbnmo"><sub id="fbnmo"><form id="fbnmo"></form></sub></label></form><th id="fbnmo"></th><thead id="fbnmo"></thead><acronym id="fbnmo"></acronym><li id="fbnmo"></li><dfn id="fbnmo"></dfn><sup id="fbnmo"><table id="fbnmo"><dl id="fbnmo"><ul id="fbnmo"></ul></dl></table></sup><i id="fbnmo"></i><pre id="fbnmo"><menu id="fbnmo"><tfoot id="fbnmo"><pre id="fbnmo"></pre></tfoot></menu></pre></div> </html>