1. 程式人生 > >python從百度爬圖片

python從百度爬圖片

程式碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import re
import urllib
import json
import socket
import urllib.request
import urllib.parse
import urllib.error
# 設定超時
import time

timeout = 5
socket.setdefaulttimeout(timeout)


class Crawler:
    # 睡眠時長
    __time_sleep = 0.1
    __amount = 0
__start_amount = 0 __counter = 0 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} # 獲取圖片url內容等 # t 下載圖片時間間隔 def __init__(self, t=0.1): self.time_sleep = t # 儲存圖片 def __save_image(self, rsp_data, word): if not os.path.exists("./"
+ word): os.mkdir("./" + word) # 判斷名字是否重複,獲取圖片長度 self.__counter = len(os.listdir('./' + word)) + 1 for image_info in rsp_data['imgs']: try: time.sleep(self.time_sleep) fix = self.__get_suffix(image_info['objURL']) urllib.request.urlretrieve(image_info['objURL'
], './' + word + '/' + str(self.__counter) + str(fix)) except urllib.error.HTTPError as urllib_err: print(urllib_err) continue except Exception as err: time.sleep(1) print(err) print("產生未知錯誤,放棄儲存") continue else: print("機場+1,已有" + str(self.__counter) + "張機場") self.__counter += 1 return # 獲取字尾名 @staticmethod def __get_suffix(name): m = re.search(r'\.[^\.]*$', name) if m.group(0) and len(m.group(0)) <= 5: return m.group(0) else: return '.jpeg' # 獲取字首 @staticmethod def __get_prefix(name): return name[:name.find('.')] # 開始獲取 def __get_images(self, word='機場'): search = urllib.parse.quote(word) # pn int 圖片數 pn = self.__start_amount while pn < self.__amount: url = 'http://image.baidu.com/search/avatarjson?tn=resultjsonavatarnew&ie=utf-8&word=' + search + '&cg=girl&pn=' + str( pn) + '&rn=60&itg=0&z=0&fr=&width=&height=&lm=-1&ic=0&s=0&st=-1&gsm=1e0000001e' # 設定header防ban try: time.sleep(self.time_sleep) req = urllib.request.Request(url=url, headers=self.headers) page = urllib.request.urlopen(req) rsp = page.read().decode('unicode_escape') except UnicodeDecodeError as e: print(e) print('-----UnicodeDecodeErrorurl:', url) except urllib.error.URLError as e: print(e) print("-----urlErrorurl:", url) except socket.timeout as e: print(e) print("-----socket timout:", url) else: # 解析json rsp_data = json.loads(rsp) self.__save_image(rsp_data, word) # 讀取下一頁 print("下載下一頁") pn += 60 finally: page.close() print("下載任務結束") return def start(self, word, spider_page_num=1, start_page=1): """ 爬蟲入口 :param word: 抓取的關鍵詞 :param spider_page_num: 需要抓取資料頁數 總抓取圖片數量為 頁數x60 :param start_page:起始頁數 :return: """ self.__start_amount = (start_page - 1) * 60 self.__amount = spider_page_num * 60 + self.__start_amount self.__get_images(word) if __name__ == '__main__': crawler = Crawler(0.05) crawler.start('機場',2)#更改爬的圖片關鍵詞 # crawler.start('帥哥', 5)

相關推薦

python圖片

程式碼: #!/usr/bin/env python # -*- coding:utf-8 -*- import os import re import urllib import json import socket import urllib.req

python捉股票值

#!/usr/bin/python3 # -*- coding: utf-8 -*- # BeautifulSoup # https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#Changing%20attribute%2

使用Python地圖上批量下載興趣點(POI)

背景 編寫這個工具完全是因為資料採集專案需要,由於POI野外採集十分繁瑣,需要定位並錄入名稱、地址等資訊,為了減輕外業人員的負擔,我想到百度地圖上有相關的POI介面可以呼叫,如果能從百度地圖上下載到這

python呼叫圖片文字識別介面

# 登入百度api應用頁面獲取下面三相內容 APP_ID = 'xxxxx' API_KEY = 'xxxxxxx' SECRET_KEY = 'xxxxxxx' class BaiduImg(): def __init__(self, img_path): self.im

Python爬蟲例項:貼吧下載多頁話題內容

上週網路爬蟲課程中,留了一個實踐:從百度貼吧下載多頁話題內容。我完成的是從貼吧中一個帖子中爬取多頁內容,與老師題目要求的從貼吧中爬取多頁話題還是有一定區別的,況且,在老師講評之後,我瞬間就發現了自己跟老師程式碼之間的差距了,我在程式碼書寫上還是存在很多不規範不嚴謹的地方,而且

Python呼叫手寫識別API,將手寫筆記圖片轉換成文字

事件起因 家裡人有十幾頁手寫筆記想要轉成文字格式。網上搜了一下發現了百度有手寫文字圖片識別的api,於是拿來試試。 雖然最終效果並不理想,還是當做一次測試記錄一下。 手裡有手寫筆記想要識別一下,也可以直接參考下面程式碼試試。 程式碼 程式碼部分

Python 利用文字識別 API 識別並提取圖片中文字

Python 利用百度文字識別 API 識別並提取圖片中文字 利用百度 AI 開發平臺的 OCR 文字識別 API 識別並提取圖片中的文字。首先需註冊獲取 API 呼叫的 ID 和 key,步驟如下: 開啟百度AI開放平臺,進入控制檯中的文字識別應用(需要有百度賬號)。

利用Python進行文庫內容取(一)

新手上路 在很多時候我們需要下載百度文庫內容的時候,彈出來的是下載券不足,而現在複製其中的內容也只能複製一部分,如果遇到一些政治開卷考,考前抱佛腳,想要複製出文庫中的內容,可謂是難上加難。 對百度文庫內容的獲取,從最開始的大部分文件可以免費直接從中直接下載,

python實現VIP音樂

百度VIP音樂爬取 網頁分析 分析音樂的真實地址 url拼接 獲取所有資料 批量獲取singid 程式碼編寫 獲取所有的songid 根據songid獲取音樂的真實地址

利用Python呼叫地圖介面取小區資訊

前幾天有一個需求,就是想要查到每個一二線城市裡所有小區的經緯度,因此爬取程式和啟動程式如下 community_info_do.py 的程式碼如下 # -*- coding: utf-8 -*- """ 功能:呼叫百度地圖介面爬取各城市小區基本資訊 呼叫介面

批量識別圖片中文字(python開發者工具)

進來一直為各種課程的實驗報告困擾,字數很多,百度文庫、豆瓣等資源網站又無法免費下載。就想著如果我能把他們截圖下來,然後批量轉換成文字該多好呢?所謂懶惰是人類進步的階梯。筆者決定通過python程式,呼叫百度api完成這項功能。認證百度開發者首先要在百度開發者平臺認證成為百度開

Python實驗:搜索關鍵字自動打開相關URL

python實驗:百度搜索關鍵字自動打開相關url#! python # coding: utf-8 # python實現百度搜索關鍵字,並依次用瀏覽器打開前五個搜索結果 ## ##Beautiful Soup 是一個模塊,用於從HTML 頁面中提取信息(用於這個目的時,它比正則表達式好很多)。Beautif

Python利用地圖api批量獲取地址經緯度

req excel文件 經緯度 imp print pen with 文件 key 1.pip安裝xlrd,xlwt,requests模塊. 2.在工程目錄處放置地點Excel文件。 python代碼: #coding:utf-8 import xlrd import x

python實現搜索

python 爬蟲 mechanize 瀏覽器 利用Python mechanize模塊模擬瀏覽器實現百度搜索# -*- coding:utf-8 -*- import mechanize import sys reload(sys) sys.setdefaultencoding(‘utf8‘

python實現URL的采集

end not ref result [0 -a odin mozilla 代碼 用到的模塊:threading多線程模塊 requests模塊 BeautifulSoup模塊 實現功能:可以通過命令行控制關鍵字以及線程數,實現百度的url采集 代碼如下: #!/usr/

我的第一個自動化腳本(python)----搜索

expect style 目錄 .exe nbsp com 自動 其他人 其他 這是一個純小白胡說八道的個人總結,如果有人看到什麽不對的,歡迎批評指正 博客園開通了很久,一直不知道該怎麽去寫,總覺得自己要寫的東西都是別人已經寫過的,我再去寫就是在重復之前人所說,今天去面試和

15行Python 仿搜索引擎

name 3D ebe 結果 open author sta def images 開發工具:PyCharm 開發環境:python3.6 + flask + requests 開發流程: 1. 啟動一個web服務 from flask import Fl

【數據分析】python分析搜索關鍵詞的頻率

爬蟲 自動化 數據分析 python 基礎 涉及知識點 1、抓取數據 2、分頁爬蟲規律分析1、抓取數據,發現每一項都是data-tools標簽2、分頁分析代碼import requests from bs4 import BeautifulSoup import re impo

python爬蟲翻譯

return 中文 http mar user base res img apple python3,爬取的是百度翻譯手機版的網頁 運用requests,json模塊 英漢互譯,運行結果 #!/bin/python3 # -*- coding: UTF-

python 爬蟲 貼吧簽到小工具

sca window user con lee post use wow64 搜索 import requests,re,timeheader ={ "Cookie":"登陸過賬號後的cookie 必須填寫", "User-Agent":"Mozilla/5.