吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5501|回复: 20
收起左侧

[Python 转载] 百度图片爬取

  [复制链接]
仿佛_一念成佛 发表于 2018-7-19 23:59
[Python] 纯文本查看 复制代码
File Name: baidu_img
Description :
Author : Administrator
date: 2018/7/11/011
-------------------------------------------------
Change Activity:
2018/7/11/011:
-------------------------------------------------
"""
__author__ = 'Administrator'

import requests
import os
import re
import time
class tu_pian(object):
def __init__(self,word):#初始化
self.word = word
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'}#添反爬加请求头防止
self.start_url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s&pn={}&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0'%word#网页初始页
self.start_url_list = []#创建一个网页的列表
for i in range(10):#循环遍历	
url = self.start_url.format(i*20)#使上面的url进行字符串格式化
self.start_url_list.append(url)#把获取到的url添加到列表里面
#print(self.start_url_list)#打印列表

def get_content(self,url):
#print(url)
html = requests.get(url,headers=self.headers)#进行网络请求
#print(html.text)#打印网页源代码
img_list = re.findall('"objURL":"(.*?)",',html.text)#使用正则匹配图片
return img_list#返回图片列表

def save(self,start_url_list):#保存函数
for pic_url in start_url_list:#进行循环
print(pic_url)#打印循环后的结果
end = re.search('(.jpg|.jpeg|.png)$',pic_url)#添加一个名为end的变量名,搜索picurl里的东西
if end == None:#进行if判断,如果等于无
pic_url = pic_url + '.jpg'#则添加后缀.jpg
try:#进行错误测试
with open('./' + self.word + '/{}'.format(pic_url[-10:]), 'ab') as f:#使用with方法保存,+ 输入的文字 + 格式化picurl里面的图片名字防止重名
try:
pic = requests.get(pic_url,headers=self.headers,timeout=1)#进行网络请求,添加请求头,超过一秒则切换下一个
f.write(pic.content)#写入图片
except Exception:
pass
except Exception:
pass



def run(self):
for url in self.start_url_list:
start_url_list = self.get_content(url)
self.save(start_url_list)

if __name__ == '__main__':
word = input('请输入需要的图片;')
os.mkdir(word)
tupian = tu_pian(word)
tupian.run()


[/mw_shl_code]

免费评分

参与人数 4吾爱币 +3 热心值 +4 收起 理由
lilihuakai + 1 + 1 我很赞同!
zhuxin + 1 + 1 我很赞同!
lin_xop + 1 热心回复!
灯火阑珊=zero + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 仿佛_一念成佛 发表于 2018-7-20 00:01
------------------------------------------------
   File Name:     baidu_img
   Description :
   Author :       Administrator
   date:          2018/7/11/011
-------------------------------------------------
   Change Activity:
                   2018/7/11/011:
-------------------------------------------------
"""
__author__ = 'Administrator'

import requests
import os
import re
import time
class tu_pian(object):
    def __init__(self,word):#初始化
        self.word = word
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'}#添反爬加请求头防止
        self.start_url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s&pn={}&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0'%word#网页初始页
        self.start_url_list = []#创建一个网页的列表
        for i in range(10):#循环遍历       
            url = self.start_url.format(i*20)#使上面的url进行字符串格式化
            self.start_url_list.append(url)#把获取到的url添加到列表里面
        #print(self.start_url_list)#打印列表

    def get_content(self,url):
        #print(url)
        html = requests.get(url,headers=self.headers)#进行网络请求
        #print(html.text)#打印网页源代码
        img_list = re.findall('"objURL":"(.*?)",',html.text)#使用正则匹配图片
        return img_list#返回图片列表

    def save(self,start_url_list):#保存函数
        for pic_url in start_url_list:#进行循环
            print(pic_url)#打印循环后的结果
            end = re.search('(.jpg|.jpeg|.png)$',pic_url)#添加一个名为end的变量名,搜索picurl里的东西
            if end == None:#进行if判断,如果等于无
                pic_url = pic_url + '.jpg'#则添加后缀.jpg
            try:#进行错误测试
                with open('./' + self.word + '/{}'.format(pic_url[-10:]), 'ab') as f:#使用with方法保存,+ 输入的文字 + 格式化picurl里面的图片名字防止重名
                    try:
                        pic = requests.get(pic_url,headers=self.headers,timeout=1)#进行网络请求,添加请求头,超过一秒则切换下一个
                        f.write(pic.content)#写入图片
                    except Exception:
                        pass
            except Exception:
                pass



    def run(self):
        for url in self.start_url_list:
            start_url_list = self.get_content(url)
            self.save(start_url_list)

if __name__ == '__main__':
    word = input('请输入需要的图片;')
    os.mkdir(word)
    tupian = tu_pian(word)
    tupian.run()

 楼主| 仿佛_一念成佛 发表于 2018-7-20 00:01
张道陵 发表于 2018-7-20 01:23
蒙奇D路飞 发表于 2018-7-20 01:30
占个位置学习一下。
byxiaoxie 发表于 2018-7-20 04:32
爬不出来动态页把。。。。
mh888666 发表于 2018-7-20 05:44
多谢分享
hwl1225 发表于 2018-7-20 06:56
多谢分享
lrl666666 发表于 2018-7-20 07:25
学习学习,谢谢。
shaoyang_v 发表于 2018-7-20 07:54
学习一下  多谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 03:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表