网页爬虫抓取百度图片(Python主要用来做什么应用?爬虫参考)

优采云 发布时间: 2021-12-22 14:10

  网页爬虫抓取百度图片(Python主要用来做什么应用?爬虫参考)

  本文文章将详细讲解python爬虫如何批量抓取百度图片。小编觉得很实用,分享给大家作为参考。希望大家看完这篇文章以后可以有所收获。

  Python 主要用于什么

  Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。

  当我们要获取百度图片的时候,每张图片都要右击下载是很麻烦的。 python爬虫可以实现批量下载,根据我们的下载网站位置、图片位置、图片下载数量、图片下载位置等要求进行批量下载。

  1、导入相关库

  import requests#爬虫库

import re#正则表达式库

import os#系统库

import time#时间库

  2、确定百度图片链接

  url='http://image.baidu.com/search/index?tn=baiduimage&fm=result&ie=utf-8&word='#百度链接

  3、解码

  # 解码def decode(url):

    for key, value in str_table.items():

        url = url.replace(key, value)

    return url.translate(char_table)

  4、百度图片下拉

  def buildUrls(word):

    word = urllib.parse.quote(word)

    url = r"http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=

result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word={word}&face=0&istype=2nc=1&pn={pn}&rn=60"

    urls = (url.format(word=word, pn=x) for x in itertools.count(start=0, step=60))

    return urls

re_url = re.compile(r'"objURL":"(.*?)"')

  5、使用正则表达式获取图片数量

  totalnum = re.findall('(.*?)', string) 

print("百度图片"+totalnum[0])img_url_regex = '"thumbURL":"(.*?)",'#正则匹配式count=0#总共下载

的图片数index=0#链接后面的序号page=0#当前搜集的页while(1):

strhtml=requests.get(url+str(index),headers=headers)#get方式获取数据

string=str(strhtml.text)

print("已爬取网页")

  6、使用正则表达式查找图片url

  print("第"+str(page+1)+"页共收集到"+str(len(pic_url))+"张图片")

  7、创建文件路径下载

  def mkDir(dirName):

    dirpath = os.path.join(sys.path[0], dirName)

    if not os.path.exists(dirpath):

        os.mkdir(dirpath)

    return dirpathif __name__ == '__main__':

    with open('list.txt', 'r', encoding="utf-8") as f:

        result = f.read()

    keys = result.split('\n')

    key_words = list(enumerate(keys, start=1))

    for key in key_words:

        word = key[1]

        dirpath = mkDir(word)

        imgType = 'jpg'

        strtag = word

        numIMGS = 3

        urls = buildUrls(word)

        index = 0

        #print("= = " * 25)

        for url in urls:

            print("正在请求:", url)

            html = requests.get(url, timeout=10).content.decode('utf-8')

            imgUrls = resolveImgUrl(html)

            # print(imgUrls)

            if len(imgUrls) == 0:  # 没有图片则结束

                break

            for url in imgUrls:

                if downImgs(url, dirpath, strtag + ' ' + str(index + 1), imgType):

                    index += 1

                    # print("已下载 %s 张" % index)

                    # 双 break 跳出下载循环

                if index == numIMGS:

                    break

            if index == numIMGS:

                # print('您一共下载了 %s 张图片' % index)

                # print('程序正在终止')

                break

  关于《如何用python爬虫批量抓取百度图片》的文章文章分享到这里,希望以上内容能对大家有所帮助,让大家学到更多的知识,有感文章 @文章好的,请分享给更多人看。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线