百度爬取圖片

import requests
import re


def getDatas(keyword, pages):   
    """
    
    :param keyword: 要爬取的值
    :param pages: 要爬取的頁數,每一頁的數量是30條
    :return: url的列表
    """
    params = []
    for i in range(30, 30 * pages + 30, 30):
        params.append({
            'tn': 'resultjson_com',
            'ipn': 'rj',
            'ct': 201326592,
            'is': '',
            'fp': 'result',
            'queryWord': keyword,
            'cl': 2,
            'lm': -1,
            'ie': 'utf-8',
            'oe': 'utf-8',
            'adpicid': '',
            'st': -1,
            'z': '',
            'ic': 0,
            'word': keyword,
            's': '',
            'se': '',
            'tab': '',
            'width': '',
            'height': '',
            'face': 0,
            'istype': 2,
            'qc': '',
            'nc': 1,
            'fr': '',
            'pn': i,
            'rn': 30,
            'gsm': '1e',
            '1526377465547': ''
        })
    url = 'https://image.baidu.com/search/index'
    urls = []
    for i in params:
        response = requests.get(url, params=i)  
        html = response.text
        imgs = re.findall(r'"thumbURL":"(.*?)"',html)  #使用正則獲取每一個圖片的地址
        urls.append(imgs)

    return urls

def getImg(imgs):
    """
    
    :param imgs: 圖片的地址的列表
    :return: 
    """
    for index,img_url in enumerate(imgs):
        response = requests.get(img_url)
        with open(r"E:\myproject\tablet\%s.%s" % (index, img_url.split('.')[-1]), 'wb') as f: 
            f.write(response.content)

if __name__ == '__main__':
    datalist = sum(getDatas('平板電腦',35),[])   #將列表裏面的列表合成一個列表
    getImg(datalist)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章