日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地

發布時間:2024/9/30 编程问答 136 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 點擊上方?月小水長?并?設為星標,第一時間接收干貨推送

這是?月小水長?的第?47?篇原創干貨

對于一個爬蟲,其爬取的目標不僅限于文字,圖片、語音、視頻均有可能,我開源的微博爬蟲之話題爬蟲,設定之初就是將微博內容、評論等文字形式和圖片作為爬取目標的,只不過由于圖片無法保存在 csv 中(不考慮 base64 編碼解碼這種形式,因為如果將圖片 base64 編碼作為結果 csv 的一列,那當我們打開 csv 時,這一列內容(肉眼無法分辨的長字符串)的展示對于我們來說是毫無意義甚至是一臉懵逼的),所以我僅僅保存了所有圖片的 url 在 原始圖片 url 這一列中,如果有多個圖片,就以 分隔。

但是今天不止一個讀者跟我反饋,圖片 url 保存不了了,就算是有圖片的微博,原始圖片 url 列也是空的。

我調試了下,發現是在提取圖片那部分代碼,xpath 表達式出現點問題,可能是微博網頁稍微改動了下,修復之后,又能流暢地保存 url 鏈接了,代碼變動的地方主要是 extract_picture_urls 這個函數,可以直接復制下面的函數體取代之前的,也可以直接上 github 下載。

def?extract_picture_urls(self,info,?weibo_id):
????print('開始提取圖片?URL')try:
????????a_list?=?info.xpath('./div/a/@href')
????????all_pic?=?'https://weibo.cn/mblog/picAll/'?+?weibo_id?+?'?rl=1'if?all_pic?in?a_list:
????????????selector?=?self.deal_html(all_pic)
????????????preview_picture_list?=?selector.xpath('//img/@src')
????????????picture_list?=?[
????????????????????p.replace('/thumb180/',?'/large/')for?p?in?preview_picture_list
????????????]
????????????picture_urls?=?','.join(picture_list)
????????????print(picture_urls)else:
????????????picture_urls?=?'無'if?info.xpath('.//img/@src'):
????????????????preview_picture?=?info.xpath('.//img/@src')[-1]
????????????????picture_urls?=?preview_picture.replace('/wap180/',?'/large/')else:
????????????????sys.exit("爬蟲微博可能被設置成了'不顯示圖片',請前往""'https://weibo.cn/account/customize/pic',修改為'顯示'"
????????????????)return?picture_urlsexcept?Exception?as?e:
????????print('Error:?',?e)
????????traceback.print_exc()

也許有的同學還有根據這些圖片 url 下載圖片到本地的需求,其實這個很簡單,根據 url 下載圖片這部分代碼幾乎是放之四海而皆準的。

url?=?'http://ww2.sinaimg.cn/large/e76f9161gy1gdh0t0j83ij20yi1pcdts.jpg'
filename?=?url.split('/')[-1]
response?=?requests.get(url=url,?headers=headers)with?open(f'img/{filename}',?'wb')?as?f:
????f.write(response.content)

大家也許還有這樣的需求:根據話題爬蟲微博保存的圖片 url 保存圖片到本地,乍一想,這是個很簡單的問題,只需要導入 pandas 庫遍歷 csv 就行,但是如果 csv 有 10w 行,我大概率確定一次是無法保存完所有的圖片的,平均每個微博 2 個圖片,就有 20w 張圖片需要下載,服務器會顯然不會允許短時間這么頻繁的請求,每 10 張圖片 sleep 1秒,就算不考慮網絡請求 IO 和磁盤寫 IO,光休眠就有 2w 秒,也就是 2w/3600 ~= 6 個小時,如果突然斷網,下次就得從頭再來,這還是較為理想的情況,所以很有必要斷點續爬,怎么實現呢,給 csv 文件新增一列 isFinished,初始值全為 0,每次遍歷的時候只取 isFinished=0 的行的 url,如果該行 url 的圖片下載到本地了,就立刻將該行 isFinished 字段置為 1。這樣,每次無論時長,爬的內容都具有可連續性

我將本公眾號的所有有關微博爬蟲的文章整理成了專輯,點擊文章開始處的專輯圖標就能快速瀏覽,最后,還是那句話,點擊閱讀原文,直達本次代碼的 github 地址。

?????????????????????????????????????????????????????????點催更

總結

以上是生活随笔為你收集整理的swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。