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

Python3爬蟲學(xué)習(xí)之將爬取的信息保存到本地的方法詳解

 更新時間:2018年12月12日 09:43:27   作者:Veniendeavor  
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之將爬取的信息保存到本地的方法,結(jié)合實例形式詳細分析了Python3信息爬取、文件讀寫、圖片存儲等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python3爬蟲學(xué)習(xí)之將爬取的信息保存到本地的方法。分享給大家供大家參考,具體如下:

將爬取的信息存儲到本地

之前我們都是將爬取的數(shù)據(jù)直接打印到了控制臺上,這樣顯然不利于我們對數(shù)據(jù)的分析利用,也不利于保存,所以現(xiàn)在就來看一下如何將爬取的數(shù)據(jù)存儲到本地硬盤。

1 對.txt文件的操作

讀寫文件是最常見的操作之一,python3 內(nèi)置了讀寫文件的函數(shù):open

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None))
Open file and return a corresponding  file object. If the file cannot be opened, an OSError
 is raised.

其中比較常用的參數(shù)為file和mode,參數(shù)file為文件的路徑,參數(shù)mode為操作文件的方式(讀/寫),函數(shù)的返回值為一個file對象,如果文件操作出現(xiàn)異常的話,則會拋出 一個OSError

還以簡書首頁文章題目為例,將爬取到的文章標(biāo)題存放到一個.txt文件中,具體代碼如下:

# -*- coding:utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup
url = r'http://www.jianshu.com'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
soup = BeautifulSoup(page_info, 'html.parser')
titles = soup.find_all('a', 'title')
try:
  # 在E盤以只寫的方式打開/創(chuàng)建一個名為 titles 的txt文件
  file = open(r'E:\titles.txt', 'w')
  for title in titles:
  # 將爬去到的文章題目寫入txt中
    file.write(title.string + '\n')
finally:
  if file:
    # 關(guān)閉文件(很重要)
    file.close()

open中mode參數(shù)的含義見下表:

符號 含義
r' 以只讀模式打開文件(默認(rèn)模式)
w' 以只寫的方式打開文件,如果文件存在的話會先刪除再重新創(chuàng)建
x' 以獨占的方式打開文件,如果文件已經(jīng)存在則錯誤
a' 以寫的形式打開文件,若文件已存在,則以追加的方式寫入
b' 二進制模式
t' 文本模式(默認(rèn))
+' 更新文件(讀/寫)

其中't'為默認(rèn)模式,'r'相當(dāng)于'rt',符號可以疊加使用,像'r+b'

另外,對文件操作一定要注意的一點是:打開的文件一定要關(guān)閉,否則會占用相當(dāng)大的系統(tǒng)資源,所以對文件的操作最好使用try:...finally:...的形式。但是try:...finally:...的形式會使代碼顯得比較雜亂,所幸python中的with語句可以幫我們自動調(diào)用close()而不需要我們寫出來,所以,上面代碼中的try:...finally:...可使用下面的with語句來代替:

with open(r'E:\title.txt', 'w') as file:
  for title in titles:
    file.write(title.string + '\n')

效果是一樣的,建議使用with語句

2 圖片的儲存

有時候我們的爬蟲不一定只是爬取文本數(shù)據(jù),也會爬取一些圖片,下面就來看怎么將爬取的圖片存到本地磁盤。

我們先來選好目標(biāo),知乎話題:女生怎么健身鍛造好身材? (單純因為圖多,不要多想哦 (# _ # ) )

看下頁面的源代碼,找到話題下圖片鏈接的格式,如圖:

可以看到,圖片在img標(biāo)簽中,且class=origin_image zh-lightbox-thumb,而且鏈接是由.jpg結(jié)尾,我們便可以用Beautiful Soup結(jié)合正則表達式的方式來提取所有鏈接,如下:

links = soup.find_all('img', "origin_image zh-lightbox-thumb",src=re.compile(r'.jpg$'))

提取出所有鏈接后,使用request.urlretrieve來將所有鏈接保存到本地

Copy a network object denoted by a URL to a local file. If the URL points to a local file, the object will not be copied unless filename is supplied. Return a tuple (filename, headers)
where filename is the local file name under which the object can be found, and headers is whatever the info()
method of the object returned by urlopen()
 returned (for a remote object). Exceptions are the same as for urlopen()
.

具體實現(xiàn)代碼如下:

# -*- coding:utf-8 -*-
import time
from urllib import request
from bs4 import BeautifulSoup
import re
url = r'https://www.zhihu.com/question/22918070'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
soup = BeautifulSoup(page_info, 'html.parser')
# Beautiful Soup和正則表達式結(jié)合,提取出所有圖片的鏈接(img標(biāo)簽中,class=**,以.jpg結(jié)尾的鏈接)
links = soup.find_all('img', "origin_image zh-lightbox-thumb",src=re.compile(r'.jpg$'))
# 設(shè)置保存的路徑,否則會保存到程序當(dāng)前路徑
local_path = r'E:\Pic'
for link in links:
  print(link.attrs['src'])
  # 保存鏈接并命名,time防止命名沖突
  request.urlretrieve(link.attrs['src'], local_path+r'\%s.jpg' % time.time())

運行結(jié)果

PS:希望大家進行圖片爬取的時候,盡量不要將爬下來圖片作為商用,特別是攝影作品,都是具有版權(quán)的,嗯。。。還有就是注意營養(yǎng)哦~~~

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python 多線程其他屬性以及繼承Thread類詳解

    Python 多線程其他屬性以及繼承Thread類詳解

    這篇文章主要介紹了Python 多線程其他屬性以及繼承Thread類詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python tkinter實現(xiàn)圖片標(biāo)注功能(完整代碼)

    Python tkinter實現(xiàn)圖片標(biāo)注功能(完整代碼)

    tkinter是Python下面向tk的圖形界面接口庫,可以方便地進行圖形界面設(shè)計和交互操作編程,本文通過實例代碼給大家介紹的Python tkinter實現(xiàn)圖片標(biāo)注功能,感興趣的朋友一起看看吧
    2019-12-12
  • Python讀取及保存mat文件的注意事項說明

    Python讀取及保存mat文件的注意事項說明

    這篇文章主要介紹了Python讀取及保存mat文件的注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python實現(xiàn)從常規(guī)文檔中提取圖片的方法詳解

    Python實現(xiàn)從常規(guī)文檔中提取圖片的方法詳解

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)從常規(guī)文檔(Word,PDF,Excel,HTML)中提取圖片的方法,有需要的小伙伴可以參考一下
    2025-03-03
  • Python裝飾器使用方法全面梳理

    Python裝飾器使用方法全面梳理

    這篇文章主要介紹了Python @property裝飾器的用法,在Python中,可以通過@property裝飾器將一個方法轉(zhuǎn)換為屬性,從而實現(xiàn)用于計算的屬性,下面文章圍繞主題展開更多相關(guān)詳情,感興趣的小伙伴可以參考一下
    2023-01-01
  • python中字典的常見操作總結(jié)2

    python中字典的常見操作總結(jié)2

    這篇文章主要介紹了python中字典的常見操作總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 詳解python多線程之間的同步(一)

    詳解python多線程之間的同步(一)

    這篇文章主要介紹了python多線程之間的同步,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python發(fā)送郵件示例(支持中文郵件標(biāo)題)

    python發(fā)送郵件示例(支持中文郵件標(biāo)題)

    python發(fā)送中文郵件示例,支持中文郵件標(biāo)題和中文郵件內(nèi)容。支持多附件。根據(jù)用戶名推測郵件服務(wù)器提供商
    2014-02-02
  • Python開發(fā)文字版密室逃脫游戲的實例(含代碼)

    Python開發(fā)文字版密室逃脫游戲的實例(含代碼)

    密室逃脫游戲是一種頗受歡迎的解謎類游戲,玩家通常需要通過觀察、推理、合作等方式解決一系列難題,以逃脫困境,在這篇博文中,我們將使用Python開發(fā)一個文字版密室逃脫游戲,旨在通過簡單的文本交互來呈現(xiàn)游戲的趣味性與挑戰(zhàn)性
    2025-04-04
  • 教你如何用python爬取王者榮耀月收入流水線

    教你如何用python爬取王者榮耀月收入流水線

    這篇文章主要介紹了教你如何用python爬取王者榮耀月收入流水線,對正在學(xué)習(xí)python的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04

最新評論

泰顺县| 新宁县| 疏勒县| 宜都市| 桐庐县| 浑源县| 比如县| 独山县| 抚顺市| 龙江县| 上蔡县| 石河子市| 全州县| 万源市| 江孜县| 荆门市| 万州区| 临泽县| 嘉峪关市| 错那县| 安丘市| 松江区| 临沂市| 阿拉善右旗| 广宗县| 湛江市| 镇安县| 茂名市| 吉水县| 丰都县| 岳普湖县| 清流县| 化隆| 郧西县| 宾阳县| 西安市| 微博| 柯坪县| 柘城县| 肥西县| 龙海市|