1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一文快速學(xué)會 Python 基礎(chǔ)爬蟲!

        共 2191字,需瀏覽 5分鐘

         ·

        2020-12-09 23:20

        推薦閱讀??點(diǎn)擊標(biāo)題可跳轉(zhuǎn)

        新手怎么100天入門Python?

        前言

        剛學(xué)完python基礎(chǔ),想學(xué)習(xí)爬蟲的新手,這里有你想要的東西。


        本文著重點(diǎn)在于教新手如何學(xué)習(xí)爬蟲,并且會以外行人的思維進(jìn)行形象地講解。最近我一兄弟想學(xué),我就想寫個教學(xué)給他,然后想不如分享到網(wǎng)絡(luò)上,給熱愛學(xué)習(xí)的人們一起學(xué)習(xí)探討。




        環(huán)境安裝

        python3.7.1


        pip install requests

        pip install beautifulsoup4

        pip install lxml


        技術(shù)講解

        requests庫


        requests一般用于發(fā)起http請求,并且拿到請求的結(jié)果。http常用的請求有兩種,GET和POST,爬蟲主要用的是GET請求。


        在不懂http,https和dns,TCP/IP等協(xié)議的情況下,我直接打個比方來解釋一下什么是GET請求,以360瀏覽器為例,人在360瀏覽器輸入www.baidu.com,然后敲擊enter鍵,直到頁面出現(xiàn),整個過程,我們可以抽象為我們向百度服務(wù)器發(fā)起的一次GET請求。


        更專業(yè),更詳細(xì)的解釋,自己去百度學(xué)習(xí)吧。


        如何使用requests庫來模擬瀏覽器的行為來獲取頁面內(nèi)容呢?


        示例代碼如下

        import?requests
        web?=?requests.get('https://www.baidu.com')??#向百度發(fā)起一次get請求,返回請求結(jié)果的實體類
        print(web.status_code)????#請求返回的狀態(tài)碼,200是OK,404是頁面不存在,500是錯誤,更多自己百度搜索
        print(type(web.content))????#頁面內(nèi)容的數(shù)據(jù)類型是bytes,因此需要解碼
        print(type(web.content.decode()))
        print(web.content.decode())????#解碼之后,得到的頁面內(nèi)容是結(jié)構(gòu)化的字符串


        這樣看起來,我們獲取到的頁面內(nèi)容不是我們在瀏覽器看到的圖形化界面,而是字符串,更像是一些代碼。如果你學(xué)過html和css那就不用多說了。沒學(xué)過也不要緊,現(xiàn)在可以簡單學(xué)一下,也就花幾分鐘了解一下就夠用了。


        html是一種標(biāo)記語言,可以被瀏覽器執(zhí)行,然后呈現(xiàn)出可視化的圖形界面。如果你把web.content.decode()這一串字符串保存在test.html里,然后雙擊打開,你會看到圖形化界面的,只不過有些圖片可能顯示不了,這里就不細(xì)說了。


        html其實很好理解,不要想得太復(fù)雜,就是一段有規(guī)律的格式化的文本。


        其基本格式就是


        <html>

        <head>...head>

        <body>...<body>

        <script>...script>

        <style>...style>

        html>


        html文本的標(biāo)簽一般都是成雙成對,有始有終的,比如和是一隊,千萬不能拆散,拆散就亂套了。少數(shù)除外比如
        是換行用的,可以不用配對。


        這里我們主要講body標(biāo)簽,網(wǎng)頁的主要內(nèi)容都是在這個標(biāo)簽里顯示的,比如標(biāo)題,段落,圖片等


        在test.html里我們寫入一下代碼并且保存。

        <html>

        <body>

        <h1>我的網(wǎng)站h1>

        <p>這是我的網(wǎng)站p>

        body>

        html>


        beautifulsoup4庫


        bs4(簡稱)庫是用于解析格式化文本,提取數(shù)據(jù)用的庫。


        我們利用requests庫的get函數(shù)拿到網(wǎng)頁的內(nèi)容是一段格式化的字符串,接下來就可以用bs4來解析它。


        解析的示例代碼如下


        from?bs4?import?BeautifulSoup

        html?=?'''



        我的網(wǎng)站



        這是我的網(wǎng)站





        '''
        ????#從網(wǎng)頁拿到html的格式化的字符串,保存到html里

        soup?=?BeautifulSoup(html,?'lxml')????#使用lxml解析器來解析文本,html和xml格式是類似的

        print(soup.find_all('h1'))????#使用find_all函數(shù)來找所有的h1標(biāo)簽,返回的結(jié)果是數(shù)組

        print(soup.find_all('p'))????#找所有的p標(biāo)簽,返回的結(jié)果是數(shù)組



        更復(fù)雜一點(diǎn)的,比如



        from?bs4?import?BeautifulSoup

        html?=?'''



        我的網(wǎng)站



        這是我的網(wǎng)站





        測試1





        測試2





        '''

        soup?=?BeautifulSoup(html,?'lxml')

        div_tags?=?soup.find_all(name='div',?attrs={'class':?'test-item'})

        for?tag?in?div_tags:

        ????print(type(tag))

        ????print(tag)

        ????print(tag.string)

        ????print(tag.attrs,?'\n')


        注意,tag保存的不是字符串,而是bs4模塊中的一個標(biāo)簽實體類,我們主要需要知道它的attrs屬性和string屬性,方便我們拿到一些我們想要的文本和信息,比如a標(biāo)簽的href屬性就保存在attrs里。


        總結(jié)

        本文主要講了如何使用requests獲取網(wǎng)頁文本內(nèi)容,以及如何解析html文本,更多更好用的爬蟲庫。

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        萬水千山總是情,點(diǎn)個【在看】行不行

        *聲明:本文于網(wǎng)絡(luò)整理,版權(quán)歸原作者所有,如來源信息有誤或侵犯權(quán)益,請聯(lián)系我們刪除或授權(quán)事宜


        瀏覽 60
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            我要看黄色片子 | 精品产国自在拍 | 欧美寡妇偷汉性猛交 | 天天艹逼 | 久久不射电影院 | 成人无码小说 | 久久99精品久久久久久兰草影视 | 色噜噜狠狠色综合影视 | 操你逼网站 | 哦┅┅快┅┅用力啊┅┅教室 |