最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 爬取壁紙網(wǎng)站的示例

 更新時(shí)間:2021年03月31日 16:15:14   作者:明 總 有  
這篇文章主要介紹了python 爬取壁紙網(wǎng)站的示例,幫助大家更好的理解和學(xué)習(xí)使用python爬蟲(chóng),感興趣的朋友可以了解下

本次爬蟲(chóng)用到的網(wǎng)址是:

http://www.netbian.com/index.htm: 彼岸桌面.里面有很多的好看壁紙,而且都是可以下載高清無(wú)損的,還比較不錯(cuò),所以我就拿這個(gè)網(wǎng)站練練手。

作為一個(gè)初學(xué)者,剛開(kāi)始的時(shí)候,無(wú)論的代碼的質(zhì)量如何,總之代碼只要能夠被正確完整的運(yùn)行那就很能夠讓自己開(kāi)心的,如同我們的游戲一樣,能在短時(shí)間內(nèi)得到正向的反饋,我們就會(huì)更有興趣去玩。

學(xué)習(xí)也是如此,只要我們能夠在短期內(nèi)得到學(xué)習(xí)帶來(lái)的反饋,那么我們的對(duì)于學(xué)習(xí)的欲望也是強(qiáng)烈的。

作為一個(gè)菜雞,能夠完整的完整此次爬蟲(chóng)程序的編寫(xiě),那便是一個(gè)最大的收貨,但其實(shí)我在此次過(guò)程中的收獲遠(yuǎn)不止此。

好的代碼其實(shí)應(yīng)該具有以下特性

  1. 能夠滿足最關(guān)鍵的需求
  2. 容易理解
  3. 有充分的注釋
  4. 使用規(guī)范的命名
  5. 沒(méi)有明顯的安全問(wèn)題
  6. 經(jīng)過(guò)充分的測(cè)試

就以充分的測(cè)試為例,經(jīng)常寫(xiě)代碼的就應(yīng)該知道,盡管多數(shù)時(shí)候你的代碼沒(méi)有BUG,但那僅僅說(shuō)明只是大多數(shù)情況下是穩(wěn)定的,但是在某些條件下就會(huì)出錯(cuò)(達(dá)到出錯(cuò)條件,存在邏輯問(wèn)題的時(shí)候等)。這是肯定的。至于什么原因,不同的代碼有不同的原因。如果代碼程序都是一次就能完善的,那么我們使用的軟件的軟件就不會(huì)經(jīng)常更新了。其他其中的道理就不一 一道說(shuō)了,
久而自知

好的代碼一般具有的5大特性

1.便于維護(hù)
2.可復(fù)用
3.可擴(kuò)展
4.強(qiáng)靈活性
5.健壯性

經(jīng)過(guò)我的代碼運(yùn)行我發(fā)現(xiàn)時(shí)間復(fù)雜度比較大,因此這是我將要改進(jìn)的地方,但也不止于此。也有很多利用得不合理的地方,至于存在的不足的地方就待我慢慢提升改進(jìn)吧!

路過(guò)的大佬歡迎留下您寶貴的代碼修改意見(jiàn),

完整代碼如下

import os
import bs4
import re
import time
import requests
from bs4 import BeautifulSoup

def getHTMLText(url, headers):
  """向目標(biāo)服務(wù)器發(fā)起請(qǐng)求并返回響應(yīng)"""
  try:
    r = requests.get(url=url, headers=headers)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, "html.parser")
    return soup
  except:
    return ""

def CreateFolder():
  """創(chuàng)建存儲(chǔ)數(shù)據(jù)文件夾"""
  flag = True
  while flag == 1:
    file = input("請(qǐng)輸入保存數(shù)據(jù)文件夾的名稱:")
    if not os.path.exists(file):
      os.mkdir(file)
      flag = False
    else:
      print('該文件已存在,請(qǐng)重新輸入')
      flag = True

  # os.path.abspath(file) 獲取文件夾的絕對(duì)路徑
  path = os.path.abspath(file) + "\\"
  return path

def fillUnivList(ulist, soup):
  """獲取每一張圖片的原圖頁(yè)面"""
  # [0]使得獲得的ul是 <class 'bs4.BeautifulSoup'> 類型
  div = soup.find_all('div', 'list')[0]
  for a in div('a'):
    if isinstance(a, bs4.element.Tag):
      hr = a.attrs['href']
      href = re.findall(r'/desk/[1-9]\d{4}.htm', hr)
      if bool(href) == True:
        ulist.append(href[0])

  return ulist

def DownloadPicture(left_url,list,path):
  for right in list:
    url = left_url + right
    r = requests.get(url=url, timeout=10)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text,"html.parser")
    tag = soup.find_all("p")
    # 獲取img標(biāo)簽的alt屬性,給保存圖片命名
    name = tag[0].a.img.attrs['alt']
    img_name = name + ".jpg"
    # 獲取圖片的信息
    img_src = tag[0].a.img.attrs['src']
    try:
      img_data = requests.get(url=img_src)
    except:
      continue

    img_path = path + img_name
    with open(img_path,'wb') as fp:
      fp.write(img_data.content)
    print(img_name, "  ******下載完成!")

def PageNumurl(urls):
  num = int(input("請(qǐng)輸入爬取所到的頁(yè)碼數(shù):"))
  for i in range(2,num+1):
    u = "http://www.netbian.com/index_" + str(i) + ".htm"
    urls.append(u)

  return urls


if __name__ == "__main__":
  uinfo = []
  left_url = "http://www.netbian.com"
  urls = ["http://www.netbian.com/index.htm"]
  headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
  }
  start = time.time()
  # 1.創(chuàng)建保存數(shù)據(jù)的文件夾
  path = CreateFolder()
  # 2. 確定要爬取的頁(yè)面數(shù)并返回每一頁(yè)的鏈接
  PageNumurl(urls)
  n = int(input("訪問(wèn)的起始頁(yè)面:"))
  for i in urls[n-1:]:
    # 3.獲取每一個(gè)頁(yè)面的首頁(yè)數(shù)據(jù)文本
    soup = getHTMLText(i, headers)
    # 4.訪問(wèn)原圖所在頁(yè)鏈接并返回圖片的鏈接
    page_list = fillUnivList(uinfo, soup)
    # 5.下載原圖
    DownloadPicture(left_url, page_list, path)

  print("全部下載完成!", "共" + str(len(os.listdir(path))) + "張圖片")
  end = time.time()
  print("共耗時(shí)" + str(end-start) + "秒")

運(yùn)行

部分展示結(jié)果如下:

以上就是python 爬取壁紙網(wǎng)站的示例的詳細(xì)內(nèi)容,更多關(guān)于python 爬取壁紙網(wǎng)站的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytorch可視化之Visdom使用實(shí)例

    Pytorch可視化之Visdom使用實(shí)例

    Visdom 是一個(gè)專門(mén)用于 PyTorch 的交互式可視化工具,可以對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行豐富的可視化,幫助我們實(shí)時(shí)監(jiān)控在遠(yuǎn)程服務(wù)器上進(jìn)行的科學(xué)實(shí)驗(yàn),這篇文章主要給大家介紹了關(guān)于Pytorch可視化之Visdom使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • pandas 將索引值相加的方法

    pandas 將索引值相加的方法

    今天小編就為大家分享一篇pandas 將索引值相加的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python中常見(jiàn)占位符的用法解析

    Python中常見(jiàn)占位符的用法解析

    在Python編程中,經(jīng)常需要在字符串中插入變量或占位符來(lái)構(gòu)建動(dòng)態(tài)的文本內(nèi)容,這篇文章主要為大家介紹了一些常見(jiàn)占位符的使用,需要的可以了解下
    2024-01-01
  • Python 文本滾動(dòng)播放器的實(shí)現(xiàn)代碼

    Python 文本滾動(dòng)播放器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python 文本滾動(dòng)播放器的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)

    Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)

    在自然語(yǔ)言處理上,文字、音頻互轉(zhuǎn)是一個(gè)很關(guān)鍵的技術(shù)點(diǎn)。對(duì)于語(yǔ)音轉(zhuǎn)文字,個(gè)人實(shí)現(xiàn)較為困難,我們可以使用語(yǔ)音轉(zhuǎn)文字的軟件或借助各API(如科大訊飛等)進(jìn)行移植開(kāi)發(fā)。不過(guò)文字轉(zhuǎn)語(yǔ)音就相對(duì)而言容易實(shí)現(xiàn)很多了
    2022-02-02
  • Python私有pypi源注冊(cè)自定義依賴包Windows詳解

    Python私有pypi源注冊(cè)自定義依賴包Windows詳解

    這篇文章主要介紹了Python私有pypi源注冊(cè)自定義依賴包Windows,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python中re模塊常用方法總結(jié)分析

    Python中re模塊常用方法總結(jié)分析

    這篇文章主要為大家介紹了Python中re模塊常用方法,并對(duì)這些常用方法進(jìn)行總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • 什么是python的列表推導(dǎo)式

    什么是python的列表推導(dǎo)式

    在本篇文章里小編給大家分享了關(guān)于python列表推導(dǎo)式的含義及用法,需要的朋友們可以參考下。
    2020-05-05
  • 基于Python實(shí)現(xiàn)快遞信息提取

    基于Python實(shí)現(xiàn)快遞信息提取

    這篇文章主要為大家介紹了如何利用Python實(shí)現(xiàn)提取快遞信息,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-03-03
  • 用python寫(xiě)PDF轉(zhuǎn)換器的實(shí)現(xiàn)

    用python寫(xiě)PDF轉(zhuǎn)換器的實(shí)現(xiàn)

    這篇文章主要介紹了用python寫(xiě)PDF轉(zhuǎn)換器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論

南木林县| 乡宁县| 七台河市| 惠安县| 荥阳市| 平原县| 象山县| 密山市| 汶上县| 沙洋县| 中阳县| 夏邑县| 逊克县| 和林格尔县| 偃师市| 鸡东县| 孝昌县| 玉树县| 讷河市| 松溪县| 同心县| 芜湖县| 河源市| 县级市| 西城区| 九龙县| 府谷县| 丹寨县| 固阳县| 苍南县| 长子县| 阳信县| 祁阳县| 桓仁| 长春市| 顺平县| 关岭| 乐山市| 邯郸县| 长汀县| 东至县|