python爬虫练习1:通过python爬取糗事百科的搞笑图片

爬取糗百的图片

最近在研究python,想着自学爬虫获取数据,到时候进行数据分析

在爬取图片的时候有些曲折,但是最终还是被我攻克下来了

话不多说,我们开始

我们要爬取的网站是 糗事百科 的图片

首先,我们来进行简单的一步数据分析

F12,找出里面的结构,找到我们想要的图片,热图,那些广告图我们是不要的

在这里插入图片描述
发现这里的主要的图片都在这里面,都有这个illustration的类名

OK,简单分析之后我们开始动手实践

第一步,我们先进行一个UA伪装,F12,找到NetWork选项栏,随便点一个进去,找到User-Agent

在这里插入图片描述

 	url='https://www.qiushibaike.com/imgrank/'
    headers = {
    
    
        'User-Agent': '这里放你自己的User-Agent'
    }
    #这一步是获取网页的HTML界面
    allHtml = requests.get(url=url,headers=headers).text

接下来我们获取到我们想要的图片,这个刚刚我们已经分析过了,这里就直接上代码

	allImg=allHtml.find_all("img",class_='illustration')

然后我们获取到图片的URL地址

	imgurl = img['src']
	#这里糗百的URL是没有https的,我这里给他加了上去
    images = requests.get("https:"+imgurl)

接下来我们就是把获取到的图片转成base64编码之后再放到本地

	Img64 = base64.b64encode(BytesIO(images.content).read())
    imgdata = base64.b64decode(Img64)
    with open('D:\\python学习\\爬虫\\choubai\\'+str(index)+'.jpg', 'wb') as f:
    	f.write(imgdata)

大体思路就是这样,我在这一块转64编码的时候遇到一些小问题,参靠这篇文章解决的

https://blog.csdn.net/abc15766228491/article/details/78901336

大家有兴趣的可以去了解一下,我就是这个地方出的错,转base64好像有点小问题,不知道出在哪里,有知道的小伙伴欢迎留言,我会仔细看的

 # 这两个代码不知道为啥不行,就用了其他的库
 # 下面两句代码好像转base64编码出错
 # Img64 = base64.b64encode(requests.get("https:"+imgurl).content)
 # print(requests.get("https:"+imgurl).content)

OK,接下来看代码

# @创建时间 : 2020/10/16 22:52
# @开发作者 : Vixcity
# @文件名称 : 糗百爬图.py
# @开发工具 : PyCharm
import requests
from bs4 import BeautifulSoup
import base64
from io import BytesIO

def getImg(allHtml):
    # 获取到我们需要的img图片
    allImg=allHtml.find_all("img",class_='illustration')
    for index,img in enumerate(allImg):
        # 获取到图片的url
        imgurl = img['src']
        images = requests.get("https:"+imgurl)
        #转base64编码
        Img64 = base64.b64encode(BytesIO(images.content).read())
        imgdata = base64.b64decode(Img64)
        # Img64 = base64.b64encode(requests.get("https:"+imgurl).content)
        # print(requests.get("https:"+imgurl).content)
        #存储文件到文件夹下
        with open('D:\\python学习\\爬虫\\choubai\\'+str(index)+'.jpg', 'wb') as f:
            f.write(imgdata)

def main():
    # UA伪装请求数据
    url='https://www.qiushibaike.com/imgrank/'
    headers = {
    
    
        'User-Agent': '这里放你自己的User-Agent'
    }
    allHtml = requests.get(url=url,headers=headers).text
    #解析网页
    soup = BeautifulSoup(allHtml,"html.parser")
    getImg(soup)

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/Vixcity/article/details/109127826
今日推荐