成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

網(wǎng)絡(luò)爬蟲介紹

sf190404 / 2447人閱讀

摘要:什么是爬蟲網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,是一種自動化瀏覽網(wǎng)絡(luò)的程序,或者說是一種網(wǎng)絡(luò)機器人。

什么是爬蟲

網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,是一種“自動化瀏覽網(wǎng)絡(luò)”的程序,或者說是一種網(wǎng)絡(luò)機器人。它們被廣泛用于互聯(lián)網(wǎng)搜索引擎或其他類似網(wǎng)站,以獲取或更新這些網(wǎng)站的內(nèi)容和檢索方式。它們可以自動采集所有其能夠訪問到的頁面內(nèi)容,以供搜索引擎做進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。簡單來講就是模擬瀏覽器請求網(wǎng)頁。

爬蟲的用處

Web爬蟲作為搜索引擎的重要組成部分

建立數(shù)據(jù)集以用于研究,業(yè)務(wù)和其他目的。比如:
? ?①收集營銷數(shù)據(jù),對營銷方案決策提供輔助。
? ?②分析網(wǎng)民對某件事物的評價,比如新聞事件、電影、書籍等。
? ?③分析行業(yè)發(fā)展趨勢,比如房價、薪資水平。
? ?④社會計算方面的統(tǒng)計和預(yù)測,比如票房。

知識準(zhǔn)備 http協(xié)議

常用的請求方法GET、POST等

常見的狀態(tài)碼200 OK、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、500 Internal Server Error、503 Server Unavailable等

常用的請求報頭:

前端知識

對HTML、CSS、JavaScript等有一定的掌握

爬蟲語言

選擇爬蟲用的語言,比如python, 掌握python的基本語法、包的下載與使用

爬蟲的基本步驟

目標(biāo)分析-》發(fā)送請求-》解析響應(yīng)頁面-》存儲內(nèi)容-》數(shù)據(jù)分析

python爬蟲用到的庫 請求庫

requests: requests庫是python的一個第三方請求庫,基于urllib庫(python用于HTTP請求的自帶標(biāo)準(zhǔn)庫)改寫而成,因此相比urllib庫requests更富人性化、便捷性,是爬蟲邏輯中使用最頻繁的HTTP請求庫。

Selenium:一個自動化測試工具庫,利用它可以執(zhí)行瀏覽器特定的動作,比如跳轉(zhuǎn)、輸入、點擊、下拉等。

aiohttp:提供異步Web服務(wù),提高爬蟲...

解析庫

BeautifulSoup 是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它將html的標(biāo)簽文件解析成樹結(jié)構(gòu),然后方便的獲取到指定標(biāo)簽的對應(yīng)屬性。BeautifulSoup除了支持Python標(biāo)準(zhǔn)庫中的HTML解析器之外,還支持一些第三方的解析器,BeautifulSoup官方推薦使用lxml作為解析器。BeautifulSoup()的構(gòu)造方法需要傳入兩個參數(shù):

soup = BeautifulSoup("data","lxml") //第一個參數(shù)是一段網(wǎng)頁代碼或一個網(wǎng)頁文件,第二個參數(shù)是解析網(wǎng)頁的庫,這里使用lxml庫.
Beautiful Soup將復(fù)雜HTML文檔轉(zhuǎn)換成一個復(fù)雜的樹形結(jié)構(gòu),每個節(jié)點都是Python對象。
? ? ①Tag:Tag 對象與XML或HTML原生文檔中的tag相同,比如soup.p表示p標(biāo)簽
? ? ②Attributes:一個tag可能有很多個屬性. 比如

tag的屬性的操作方法與字典相同: tag["class"]
? ? ③find()方法是找到文檔中符合條件的第一個元素,直接返回該結(jié)果。元素不存在時返回None
? ? ④find_all()方法是找到文檔中所有符合條件的元素,以列表的形式返回。元素不存在時返回空列表
? ? ⑥CSS選擇器的使用方法與CSS定位標(biāo)簽的方式相似,主要有.class 和 #id

使用正則表達式,python中的re模塊可使用正則表達式進行匹配。

pyquery庫是jQuery的Python實現(xiàn),能夠以jQuery的語法來操作解析html文檔

存儲內(nèi)容

數(shù)據(jù)庫,如MySql、MongoDB

文件

數(shù)據(jù)分析庫

jieba:是目前最好的 Python 中文分詞組件,支持 3 種分詞模式:精確模式、全模式、搜索引擎模式,同時支持繁體分詞、自定義詞典。

numpy:高性能科學(xué)計算和數(shù)據(jù)分析的基礎(chǔ)包,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。

pandas:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

matplotlib 數(shù)據(jù)可視化工具,可生成各種2D圖像。

簡單示例 環(huán)境搭建

安裝python3.6.5

使用pip install xx 命令依次安裝requests、lxml、beautifulsoup4、jieba、numpy、pandas、matplotlib、wordcloud

初階爬蟲示例介紹

爬取豆瓣上關(guān)于《權(quán)力的游戲第七季》的所有短評

    requrl = "https://movie.douban.com/subject/" + movieId + "/comments" +"?" +"start=" + str(start) + "&limit=20" 
    response = requests.get(requrl) #發(fā)送請求
    if response.status_code == 200:
        html = response.text   # 獲取響應(yīng)html內(nèi)容  
        soup = BeautifulSoup(html, "lxml") # 構(gòu)建BeautifulSoup對象,使用lxml作為解析器 
        comment_div_lits = soup.find_all("div", class_="comment")   # 找到對應(yīng)標(biāo)簽及屬性
        for item in comment_div_lits: # 循環(huán)
            comment = item.find_all("span", class_="short")[0].string # 獲取評論內(nèi)容
            eachCommentList.append(comment) # 添加到list列表
        return eachCommentList # 返回列表
爬蟲框架scrapy

Scrapy是用純Python實現(xiàn)一個為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲。Scrapy 使用了 Twisted"tw?st?d異步網(wǎng)絡(luò)框架來處理網(wǎng)絡(luò)通訊,可以加快我們的下載速度,不用自己去實現(xiàn)異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。

scrapy組件列表

Scrapy Engine(引擎): 負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數(shù)據(jù)傳遞等。

Scheduler(調(diào)度器): 它負(fù)責(zé)接受引擎發(fā)送過來的Request請求,并按照一定的方式進行整理排列,入隊,當(dāng)引擎需要時,交還給引擎。

Downloader(下載器):負(fù)責(zé)下載Scrapy Engine(引擎)發(fā)送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,

Spider(爬蟲):它負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進的URL提交給引擎,再次進入Scheduler(調(diào)度器),

Item Pipeline(管道):它負(fù)責(zé)處理Spider中獲取到的Item,并進行進行后期處理(詳細(xì)分析、過濾、存儲等)的地方.

Downloader Middlewares(下載中間件):位于Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應(yīng)。

Spider Middlewares(Spider中間件):介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應(yīng)輸入和請求輸出。

scrapy運行流程

1、引擎啟動觸發(fā)事務(wù)

2、引擎從調(diào)度器中取出一個鏈接(URL)用于接下來的抓取

3、引擎把URL封裝成一個請求(Request)傳給下載器

4、下載器把資源下載下來,并封裝成應(yīng)答包(Response)

5、爬蟲解析Response

6、解析出的實體(Item),則交給實體管道進行進一步的處理

7、解析出的是鏈接(URL),則把URL交給調(diào)度器等待抓取

創(chuàng)建項目步驟

1、使用pip install xx命令安裝scrapy、Twisted(異步網(wǎng)絡(luò)框架處理網(wǎng)絡(luò)通訊)

2、進入您打算存儲代碼的目錄中,運行下列命令:scrapy startproject tutorial # tutorial為項目名稱,自行定義

該命令將會創(chuàng)建包含下列內(nèi)容的 tutorial 目錄:

tutorial/
    scrapy.cfg
    tutorial/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...

這些文件分別是:

scrapy.cfg: 項目的配置文件

tutorial/: 該項目的python模塊

tutorial/items.py: 項目的目標(biāo)實體文件

tutorial/pipelines.py: 項目的管道文件.

tutorial/settings.py: 項目的設(shè)置文件.

tutorial/spiders/: 存儲爬蟲代碼目錄

spiders目錄下新建爬蟲文件:

import scrapy

class testSpider(scrapy.Spider):
    name = "tutorial"
    allowed_domains = ["baidu.com"]
    start_urls = (
        "https://www.baidu.com/",
    )

    def parse(self, response):
        pass 
反爬蟲與反反爬蟲介紹 常見的反爬蟲 1、通過網(wǎng)頁的請求頭

User-Agent:這個是保存用戶訪問該網(wǎng)站的瀏覽器的信息,例如Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36,requests庫本身的headers里沒有User-Agent,所以網(wǎng)站可以拒絕掉沒有User-Agent或者頻繁使用一個User-Agent的請求。

Referer:當(dāng)瀏覽器發(fā)送請求時,一般都會帶上這個,表示當(dāng)前請求是由哪個鏈接進來的。網(wǎng)站也可以拒絕沒有Referer或者頻繁使用同個Referer的請求。

authorization:有的網(wǎng)站還會有這個請求頭,這個是在用戶在訪問該網(wǎng)站的時候就會分配一個id給用戶,然后在后臺驗證該id有沒有訪問權(quán)限從而來進行發(fā)爬蟲。

2、用戶訪問網(wǎng)站的ip

當(dāng)不斷地使用一個ip來訪問一個網(wǎng)站時,網(wǎng)頁后臺也會判斷你是一個機器,把你的ip封掉。

3、驗證碼

當(dāng)頻繁請求一個網(wǎng)址,比如登錄時,會出現(xiàn)驗證碼。

反反爬蟲策略 1.添加請求頭

在請求頭headers添加請求頭,比如可以網(wǎng)上找別人整理的User-Agent列表,請求時從列表里隨機取出使用。

2.使用代理ip

網(wǎng)上有一些免費的代理ip,比如https://www.xicidaili.com/等,但使用的人太多了也經(jīng)常被封掉,可以自己爬取一些免費代理ip建成ip池,請求的時候從ip池隨機取出使用。也可以購買付費的ip,質(zhì)量比較高。

3.處理驗證碼

對于比如登錄時只要驗證一次的簡單圖片驗證碼,可以把驗證碼圖片下載下來,手動輸入;對于類似滑塊驗證碼,可以用selenium庫模擬用戶滑動解鎖;對于更復(fù)雜的驗證碼可接入收費的打碼平臺。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43745.html

相關(guān)文章

  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---10、爬蟲框架的安裝:PySpider、Scrapy

    摘要:所以如果對爬蟲有一定基礎(chǔ),上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)爬取相關(guān)庫的安裝的安裝下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)爬蟲框架的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---9、APP爬取相關(guān)庫的安裝:Appium的安裝下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...

    張憲坤 評論0 收藏0
  • 爬蟲入門

    摘要:通用網(wǎng)絡(luò)爬蟲通用網(wǎng)絡(luò)爬蟲又稱全網(wǎng)爬蟲,爬取對象從一些種子擴充到整個。為提高工作效率,通用網(wǎng)絡(luò)爬蟲會采取一定的爬取策略。介紹是一個國人編寫的強大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強大的。 爬蟲 簡單的說網(wǎng)絡(luò)爬蟲(Web crawler)也叫做網(wǎng)絡(luò)鏟(Web scraper)、網(wǎng)絡(luò)蜘蛛(Web spider),其行為一般是先爬到對應(yīng)的網(wǎng)頁上,再把需要的信息鏟下來。 分類 網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù),...

    defcon 評論0 收藏0
  • 爬蟲入門

    摘要:通用網(wǎng)絡(luò)爬蟲通用網(wǎng)絡(luò)爬蟲又稱全網(wǎng)爬蟲,爬取對象從一些種子擴充到整個。為提高工作效率,通用網(wǎng)絡(luò)爬蟲會采取一定的爬取策略。介紹是一個國人編寫的強大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強大的。 爬蟲 簡單的說網(wǎng)絡(luò)爬蟲(Web crawler)也叫做網(wǎng)絡(luò)鏟(Web scraper)、網(wǎng)絡(luò)蜘蛛(Web spider),其行為一般是先爬到對應(yīng)的網(wǎng)頁上,再把需要的信息鏟下來。 分類 網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù),...

    Invoker 評論0 收藏0
  • 精通Python網(wǎng)絡(luò)爬蟲(0):網(wǎng)絡(luò)爬蟲學(xué)習(xí)路線

    摘要:以上是如果你想精通網(wǎng)絡(luò)爬蟲的學(xué)習(xí)研究路線,按照這些步驟學(xué)習(xí)下去,可以讓你的爬蟲技術(shù)得到非常大的提升。 作者:韋瑋 轉(zhuǎn)載請注明出處 隨著大數(shù)據(jù)時代的到來,人們對數(shù)據(jù)資源的需求越來越多,而爬蟲是一種很好的自動采集數(shù)據(jù)的手段。 那么,如何才能精通Python網(wǎng)絡(luò)爬蟲呢?學(xué)習(xí)Python網(wǎng)絡(luò)爬蟲的路線應(yīng)該如何進行呢?在此為大家具體進行介紹。 1、選擇一款合適的編程語言 事實上,Python、P...

    spacewander 評論0 收藏0

發(fā)表評論

0條評論

sf190404

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<