爬取百度图片

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


#from python_wrapper import *
import os




########################################
import re
import sys
import urllib
import requests
########################################






#############################################################################################
def get_onepage_urls(onepageurl):
    """获取单个翻页的所有图片的urls+当前翻页的下一翻页的url"""
    if not onepageurl:
        print(u'已到最后一页, 结束')
        return [], ''
    try:
        html = requests.get(onepageurl).text
    except Exception as e:
        print(e)
        pic_urls = []
        fanye_url = ''
        return pic_urls, fanye_url
    pic_urls = re.findall('"objURL":"(.*?)",', html, re.S)
    fanye_urls = re.findall(re.compile(
        r'<a href="(.*)" class="n">下一页</a>'), html, flags=0)
    fanye_url = 'http://image.baidu.com' + fanye_urls[0] if fanye_urls else ''
    return pic_urls, fanye_url




def down_pic(pic_urls):




    """给出图片链接列表, 下载所有图片"""
    for i, pic_url in enumerate(pic_urls):
        try:
            pic = requests.get(pic_url, timeout=15)
            imgpath = "E:/image/" + str(i + 1) + '.jpg'
            with open(imgpath, 'wb') as f:
                f.write(pic.content)
                print(u'成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))
        except Exception as e:
            print(u'下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))
            print(e)
            continue
#############################################################################################
#https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111111&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=
if __name__ == "__main__":
    keyword = '老师'  # 关键词, 改为你想输入的词即可, 相当于在百度图片里搜索一样
    url_init_first = r'https://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111111&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word='
    #url_init_first = r'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word='
    url_init = url_init_first + urllib.quote(keyword, safe='/')
    all_pic_urls = []
    onepage_urls, fanye_url = get_onepage_urls(url_init)
    all_pic_urls.extend(onepage_urls)


    fanye_count = 0  # 累计翻页数
    while 1:
        onepage_urls, fanye_url = get_onepage_urls(fanye_url)
        fanye_count += 1
        print('第%s页' % fanye_count)
        if fanye_url == '' and onepage_urls == []:
            break
        all_pic_urls.extend(onepage_urls)


    down_pic(list(set(all_pic_urls)))


#############################################################################################

PyCharm是一个流行的Python IDE(集成开发环境),而爬取百度图片通常涉及到Python编程语言和相应的网络爬虫库。以下是使用Python在PyCharm中爬取百度图片的基本步骤: 1. 安装必要的Python库:在PyCharm中打开终端,使用pip安装requests库和BeautifulSoup库,这两个库可以帮助你发送网络请求和解析HTML页面。 ``` pip install requests pip install beautifulsoup4 ``` 2. 分析目标网站:在浏览器中打开百度图片,使用开发者工具(通常可以通过按F12打开)来分析图片的加载过程,找到图片加载的API或者图片资源的URL模式。 3. 编写爬虫代码:在PyCharm中创建一个新的Python文件,编写代码以发送网络请求并获取数据。使用requests库向百度图片发送GET请求,并获取响应内容。然后使用BeautifulSoup解析响应的HTML内容,从中提取图片URL。 4. 下载图片:对于获取到的图片URL,可以再次使用requests库发送GET请求,并将响应的内容写入到本地文件中,实现图片的下载。 5. 异常处理和日志记录:在实际编写爬虫时,应当考虑到网络请求可能发生的异常情况,并做好相应的错误处理。同时,记录日志有助于监控爬虫的运行状态和调试。 6. 遵守法律法规和网站规则:在进行网络爬取时,务必遵守相关法律法规,尊重目标网站的robots.txt规则,避免对网站服务造成过大压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值