<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬蟲案例:26行代碼完成某表情包網(wǎng)站爬取

          共 3346字,需瀏覽 7分鐘

           ·

          2022-06-28 23:51

          零基礎(chǔ)學(xué)習(xí)zhenguo老師python課程到今天剛好有一個(gè)月時(shí)間了,時(shí)間過得真快,以前知道簡(jiǎn)單知道變量,列表但是解決不了需求。剛好這兩天有朋友讓我爬取表情包網(wǎng)站,我就自己整理思路。這樣不僅僅可以學(xué)以致用,還能檢驗(yàn)自己的學(xué)習(xí)成果。順便投稿zhenguo老師還能掙一個(gè)飯錢50元錢。

          開發(fā)思路介紹

          1.連接網(wǎng)站,返回頁(yè)面的html結(jié)果。

          2.用到lxml的etree方法下的解析獲取的網(wǎng)頁(yè)。提取想要的內(nèi)容

          3.提取得到title和表情包圖片的下載地址并保存到變量list中。

          4.拼接字符串,將圖片的名字進(jìn)行重新命名并保存到本地。

          核心問題分析

          分析網(wǎng)頁(yè)代碼,我們可以看到最后的數(shù)字2對(duì)應(yīng)分頁(yè),如2表示第二頁(yè)。同理3表示第三頁(yè)。以此類推。所以我們可以將2用變量表示。依次遍歷就可以爬取對(duì)應(yīng)的頁(yè)面。

          page_n = int(input('請(qǐng)輸入你需要爬取的網(wǎng)頁(yè)數(shù)量'))
          for i in range(page_n):
              url_bqb =f'https://www.fabiaoqing.com/bqb/lists/type/hot/page/{i}.html'
              #用request模塊獲取得到url
              response = requests.get(url_bqb)
              #用到了lxml中的HTMLParser()解析器調(diào)整解析html結(jié)構(gòu)自動(dòng)補(bǔ)全語(yǔ)法錯(cuò)誤
              html_parser = lxml.etree.HTMLParser()
              #獲取html為分析html做準(zhǔn)備
              html = lxml.etree.fromstring(response.text,parser = html_parser)
          #得到標(biāo)題和圖片并打印
              bqb_title = html.xpath("http://div[@class ='bqppdiv']/p/text()")
              bqb_pic = html.xpath("http://div[@class ='bqppdiv']/img/@data-original")
              print(bqb_pic)
              print(bqb_title)

          結(jié)果如下:因?yàn)槲覀冏罱K保存到桌面,我們需要一個(gè)文件來保存我們的圖片。所以用到python的內(nèi)置模塊os

              if not os.path.exists('bqb_pic'):
                  os.mkdir('bqb_pic')

          結(jié)果如下:

          這里就是說如果不存在bqb_pic文件夾,那么我們就新建一個(gè)bqb_pic文件夾。用于保存我們的圖片。

          核心注意點(diǎn)

          這里需要注意的是我們的文件命名的時(shí)候,如?、/等這些字符是不能去命名文件的名稱的,我們需要將這些字符去掉,我們需要將這些字符進(jìn)行清洗。

          title = title.replace("/","-").replace(":","").replace("?","")

          最終的代碼展示如下

          import random
          import time
          from bs4 import BeautifulSoup
          import requests
          import lxml.etree
          import os
          page_n = int(input('請(qǐng)輸入你需要爬取的網(wǎng)頁(yè)數(shù)量'))
          for i in range(page_n):
              url_bqb =f'https://www.fabiaoqing.com/bqb/lists/type/hot/page/{i}.html'
              response = requests.get(url_bqb)
              html_parser = lxml.etree.HTMLParser()
              html = lxml.etree.fromstring(response.text,parser = html_parser)
              #將返回的字符串類型返回html進(jìn)行解析
              bqb_title = html.xpath("http://div[@class ='bqppdiv']/p/text()")
              bqb_pic = html.xpath("http://div[@class ='bqppdiv']/img/@data-original")
              print(bqb_pic)
              print(bqb_title)
          if not os.path.exists('bqb_pic'):
              os.mkdir('bqb_pic')
          for title,pic in zip(bqb_title,bqb_pic):
              title = title.replace("/","-").replace(":","").replace("?","")
              pic_stream = requests.get(pic,stream=True)
              with open(os.path.join('bqb_pic',title + '.jpg'),'wb+'as writer:
                  writer.write(pic_stream.raw.read())
              print(f'info{title}.jpg下載成功')
              time.sleep(random.uniform(0.1,0.4))

          取得的的表情包效果如下:是不是很簡(jiǎn)單和簡(jiǎn)潔,最終也只是用到了26行代碼 學(xué)習(xí)python以后發(fā)現(xiàn)有時(shí)候,編程也沒有想象中的那么復(fù)制。讓我們這種零基礎(chǔ)的小伙伴快速入門python并且完成自己的需求。也是要感謝zhenguo老師的。通過這次的實(shí)踐我也對(duì)request模塊和xpath方法訪問html的文本和標(biāo)簽的屬性有了更加深入的認(rèn)識(shí)。

          今天的投稿費(fèi)用50元有著落了,想想一個(gè)多月的不放棄。趕緊買點(diǎn)東西犒勞下自己。

          瀏覽 77
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂va欧美va亚洲va | 国产一级片免费视频 | 国产精品九九 | 99精产18在线观看 | 日韩熟妇无码 |