python关键字爬去biying图片

# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import urllib.request
import requests
import time
import json
import sys
import re
import os


#爬取目标网站url
CRAWL_TARGET_URL = 'https://cn.bing.com/images/async?q=%s&first=%d&count=%d&relp=%d&lostate=r&mmasync=1'

#每次抓取图片数量(35是此网页每次翻页请求数量)
NUMS_PER_CRAWL = 35

#抓取图片最小大小(单位字节),小于此值抛弃
MIN_IMAGE_SIZE = 10


def get_image(url, path, count):
     try:
         u = urllib.request.urlopen(url, timeout=5)
         t = u.read()
         if sys.getsizeof(t) < MIN_IMAGE_SIZE:
             return -1
     except Exception as e:
         print(url, e)
         return -2
     #提取图片格式
     frmt = url[url.rfind('.'):]
     p = re.compile("^\\.[a-zA-Z]+")
     m = p.match(frmt)
     frmt = m.group(0)
     try:
         if not os.path.exists(path):
             os.mkdir(path)
         f = open(os.path.join(path, str(count)+frmt), 'wb')
         f.write(t)
         f.close()
     except Exception as e:
         print(os.path.join(path, str(count)+frmt), e)
         return -3
     return 0


def crawl_data(info, path, num):
     first = 0
     count = 0
     #创建一个会话
     s = requests.Session()
     while(count < num):
         u = CRAWL_TARGET_URL%(info, first, NUMS_PER_CRAWL, NUMS_PER_CRAWL)
         #3.05s为发送超时时间,10s为接收到数据超时时间
         req = s.get(url =u, timeout=(3.05, 10))
         bf = BeautifulSoup(req.text, "html.parser")
         imgtags = bf.find_all("a", class_ = "iusc")
         for e in imgtags:
             if count == num:
                 return
             urldict = json.loads(e.get('m'))
             if get_image(urldict["murl"], path, count) < 0:
                 continue
             print("第%d张图片下载完成,总进度%d%%"%(count+1, (count+1)*100/num))
             sys.stdout.flush()
             count =count+1
             time.sleep(0.01)
         first = first + NUMS_PER_CRAWL
         time.sleep(0.1)



if __name__ == '__main__':
    tstart = time.time()
    key_words = ['行李','衣服']

    
    for k in range(len(key_words)):
        if os.path.exists('./' + key_words[k])==False:
            os.makedirs('./' + key_words[k])
        path = './' + key_words[k] + '/'

        picture_num = 1000
        crawl_data(key_words[k], path, picture_num)
    print("所有图片下载完毕,总用时%.2fs"%(time.time()-tstart))

此代码为网上所找,不记得网址了。原作看见请告知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种非常流行的编程语言,具有简单易学和强大的特点,因此被广泛应用于网络虫的开发中。而“关键字虫”是指利用虫技术从互联网上获取与指定关键字相关的信息。知乎是一个知识分享社区,其中包含了大量的问题和回答,因此可以作为取信息的目标网站。 利用Python虫库,我们可以编写虫程序来获取知乎上与指定关键字相关的问题和回答。首先,我们需要使用Python中的requests库来发送HTTP请求,获取知乎的网页源代码。接着,可以使用Beautiful Soup等库对网页进行解析,提取出其中的问题和回答内容。另外,也可以使用正则表达式等方法对文本进行匹配和提取。 关键字虫在知乎上可以有很多应用场景,比如用于市场调研分析、舆情监测、热点事件追踪等。通过Python编写的虫程序,我们可以定期获取知乎上与关键字相关的最新信息,从而及时了解社会热点和舆论动向。 需要注意的是,在进行虫时,我们需要遵守知乎网站的相关规定和法律法规,不得对网站造成过大的访问压力,也不得违反知识产权、个人隐私等方面的法律规定。同时,在取数据时,也要注意数据的处理和使用是否符合法律和道德规范。因此,在进行关键字虫时,需要对取的数据进行合理的处理和分析,确保遵守相关法律法规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值