搜索
简帛阁>技术文章>python爬虫(爬取图片)

python爬虫(爬取图片)

第一步

载入爬虫模块

from requests_html import HTMLSession            #载入爬虫模块

第二步

创建session对象

from requests_html import HTMLSession            #载入爬虫模块
session =HTMLSession() #创建完毕

第三步

获得发现百度图片搜索规律并发起请求并匹配到图片的url

http://image.baidu.com/search/index?tn=baiduimage&fm=result&ie=utf-8&word=我们搜图片的关键字

from requests_html import HTMLSession            #载入爬虫模块
session =HTMLSession() #创建完毕
#拿二傻子为例
headers ={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
response = session.get('http://image.baidu.com/search/index?tn=baiduimage&fm=result&ie=utf-8&word=二傻子',headers=headers)
#获取我们图片的url的正则匹配格式
img_url_regex = '"thumbURL":"{}",'
#解析并获取图片url_list
img_url_list = response.html.search_all(img_url_regex)

第四步

访问图片url并且保存下来

from requests_html import HTMLSession            #载入爬虫模块
session =HTMLSession() #创建完毕
#拿二傻子为例
headers ={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
response = session.get('http://image.baidu.com/search/index?tn=baiduimage&fm=result&ie=utf-8&word=二傻子',headers=headers)
#获取我们图片的url的正则匹配格式
print(response.status_code)
img_url_regex = '"thumbURL":"{}",'
#解析并获取图片url_list
img_url_list = response.html.search_all(img_url_regex)
print(img_url_list)
mun=0
for url in img_url_list:
    mun+=1
    #访问图片链接
    response= session.get(url[0])
    #保存二进制并保存至本地
    with open(f'第{mun}张.jpg','wb') as fw:
        fw.write(response.content)

第五步

类的封装

from requests_html import HTMLSession


class BaiDuImg:
    session = HTMLSession()
    img_url_regex = '"thumbURL":"{}",'
    url = ''
    img_url_list = []
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }

    def get_search(self):
        search = input('请输入你要搜索的图片')
        self.url = f'http://image.baidu.com/search/index?tn=baiduimage&fm=result&ie=utf-8&word={search}'

    def get_img_url_list(self):
        response = self.session.get(self.url,headers =self.headers)
        self.img_url_list = response.html.search_all(self.img_url_regex)

    def save_img(self):
        mun = 0
        for url in self.img_url_list:
            mun += 1
            # 访问图片链接
            response = self.session.get(url[0])
            # 保存二进制并保存至本地
            with open(f'第{mun}张.jpg', 'wb') as fw:
                fw.write(response.content)

    def run(self):
        self.get_search()
        self.get_img_url_list()
        self.save_img()


if __name__ == '__main__':
    baidu = BaiDuImg()
    baidu.run()

后来有个研一的小姐姐说要把全部爬完那就改改

from requests_html import HTMLSession

class BaiDuImg:
    session = HTMLSession()
    img_url_regex = '"thumbURL":"{}",'
    url = ''
    img_url_list = []

    def get_search(self):
        search = input('请输入你要搜索的图片')
        #有点点偷懒参数没有好好分析全,只对关键参数处理
        self.url = f'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={search}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word={search}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&rn=30&gsm='
	
    def get_img_url_list(self):
        '&pn=30000'
        pn = 0
        try:
            while True:  #由于百度限制只能抓取450张,嗯可能能获取480张,我懒没接着分析了,如果真的需要私聊我我可以写全
                res = self.session.get(f'{self.url}&pn={pn}')
                print(res.json()['bdIsClustered'])
                if  res.json()['bdIsClustered']=='2':
                    break
                else:
                    pn+=30
                    for dic in res.json()['data']:
                        img_url = dic.get('thumbURL')
                        if img_url:
                            self.img_url_list.append(img_url)
        except Exception as e:
            pass



    def save_img(self):
        mun = 0
        for url in self.img_url_list:
            mun += 1
            # 访问图片链接
            response = self.session.get(url)
            # 保存二进制并保存至本地
            with open(f'第{mun}张.jpg', 'wb') as fw:
                fw.write(response.content)
                print(f'第{mun}张保存本地完毕')

    def run(self):
        self.get_search()
        self.get_img_url_list()
        print(len(self.img_url_list))
        self.save_img()


if __name__ == '__main__':
    baidu = BaiDuImg()
    baidu.run()
一步载入爬虫模块fromrequests_htmlimportHTMLSession载入爬虫模块第二步创建session对象fromrequests_htmlimportHTMLSession载入
2017072522:49:21importrequestsimportosurl'https://wallpaperswallhavencc/wallpapers/full/wallhaven278
这两天尝试在百度图片时,遇到了不少坑,有几处问题还不太明白,先记录下来,待日后解决。问题如下:1百度图片的网页有两种:http://imagebaiducom/search/index?tnbai
使用工具:Python27点我下载scrapy框架sublimetext3一。搭建python(Windows版本1安装python27然后在cmd当中输入python,界面如下则安装成功2集成Sc
这篇文章主要介绍了Python爬虫煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下今天,试着爬取了煎蛋网的图片。用到的包:url
Python爬虫图片简陋版因为在自学Python学了几天打算写一个爬虫,后来发现学的python的基础还要学库于是花了好长时间查资料终于写出来一个简陋版本的东拼西凑还真让我搞成了下面放代码名字都是
Python是很好的爬虫工具不用再说了,它可以满足我们网络内容的需求,那最简单的网络上的图片,可以通过很简单的方法实现。只需导入正则表达式模块,并利用spider原理通过使用定义函数的方法可以
自从接触python以后就想着pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下。爬虫无非request获取html页面然后用正则表达式或者beautifulsoup之类现成
这个爬虫用的是百度引擎,后续需要别的网站需要自行更改点个赞留个关注吧!!我们废话不多说,上代码:*coding:utf8*importreimportrequestsfromurllibimpor
python段子某个网页的段子第一步不管三七二十一我们先导入模块http://baijiahaobaiducom/s?id1598724756013298998wfrspiderforpc段子