bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Python3中如何將爬取信息保存到本地-創新互聯

這篇文章主要為大家展示了“Python3中如何將爬取信息保存到本地”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python3中如何將爬取信息保存到本地”這篇文章吧。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、虛擬空間、營銷軟件、網站建設、鶴慶網站維護、網站推廣。

具體如下:

將爬取的信息存儲到本地

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

1 對.txt文件的操作

讀寫文件是最常見的操作之一,python3 內置了讀寫文件的函數: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.

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

還以簡書首頁文章題目為例,將爬取到的文章標題存放到一個.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盤以只寫的方式打開/創建一個名為 titles 的txt文件
  file = open(r'E:\titles.txt', 'w')
  for title in titles:
  # 將爬去到的文章題目寫入txt中
    file.write(title.string + '\n')
finally:
  if file:
    # 關閉文件(很重要)
    file.close()

open中mode參數的含義見下表:

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

其中't'為默認模式,'r'相當于'rt',符號可以疊加使用,像'r+b'

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

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

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

Python3中如何將爬取信息保存到本地

2 圖片的儲存

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

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

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

Python3中如何將爬取信息保存到本地

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

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()
.

具體實現代碼如下:

# -*- 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和正則表達式結合,提取出所有圖片的鏈接(img標簽中,class=**,以.jpg結尾的鏈接)
links = soup.find_all('img', "origin_image zh-lightbox-thumb",src=re.compile(r'.jpg$'))
# 設置保存的路徑,否則會保存到程序當前路徑
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())

以上是“Python3中如何將爬取信息保存到本地”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道!

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:Python3中如何將爬取信息保存到本地-創新互聯
當前網址:http://vcdvsql.cn/article8/csedip.html

成都網站建設公司_創新互聯,為您提供網站策劃App開發網站建設品牌網站建設面包屑導航外貿建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化