python爬虫之必应图片

参考:python爬取bing图片

import urllib
import requests
from bs4 import BeautifulSoup
import os
import time
import argparse

def SaveImage(link,InputData,count):
    try:
        time.sleep(0.2)
        urllib.request.urlretrieve(link,'./'+InputData+'/'+str(count)+'.jpg')
    except Exception :
        time.sleep(1)
        print("产生未知错误,放弃保存")
    else:
        print("图+1,已有" + str(count) + "张图")


#找到图片的链接
def FindLink(PageNum,InputData,word):
    for i in range(PageNum):
        print(i)
        try:
            url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0'
            #定义请求头
            agent = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.165063 Safari/537.36 AppEngine-Google."}
            page1 = urllib.request.Request(url.format(InputData, i*35+1), headers=agent)
            page = urllib.request.urlopen(page1)
            # 使用beautifulSoup进行解析网页
            soup = BeautifulSoup(page.read(), 'html.parser')
            #创建文件夹
            if not os.path.exists("./" + word):
                os.mkdir('./' + word)
 
            for StepOne in soup.select('.mimg'):
                link=StepOne.attrs['src']
                count = len(os.listdir('./' + word)) + 1
                SaveImage(link,word,count)
        except:
            print('URL OPENING ERROR !')

if __name__=='__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--keyword', type=str, default='', help='key word search in bing picture engine')
    parser.add_argument('--pagenum', type=int, default=50, help='number of page')
    opt = parser.parse_args()

    if opt.keyword:
        #输入需要加载的页数,每页35幅图像
        PageNum = opt.pagenum
        word=opt.keyword
        #UTF-8编码
        InputData=urllib.parse.quote(word)
        print(InputData)
        FindLink(PageNum,InputData,word)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值