基础爬虫------三个简单爬虫案例(很funny)

1.案例一:爬取豆瓣阅读所有书的出版社:案例代码如下:

import  requests
import re

r = requests.get("http://read.douban.com/provider/all")
htmltext = r.text
# print(htmltext)

html = re.findall(r'<a href="/provider/63687123/"(.*?)</section>',htmltext,re.S)[0]
htmlchubanshe = re.findall(r'<div class="name"(.*?)</div>',html,re.S)
fh = open("E:\\Pythondemo\\Python-test\\PythonLX\\chubanshe.txt","w")
for cbs in htmlchubanshe:
    print(cbs)
    fh.write(cbs+"\n")
fh.close()
案例一的运行结果:(由于爬取内容多,只截取了其中的一部分)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.案例二:爬取斗图啦网站的所有表情包:案例代码如下:

#获取网页
import requests

#正则表达式
import  re
page = 0
while(page<500):
    page+=1
    r = requests.get("http://www.doutula.com/photo/list/?page=%d"%page)
    htmltext = r.text
    # print(htmltext)


    html = re.findall(r'<ul class="list-group">(.*?)</ul>',htmltext,re.S)[0]
    #print(html)
    imgurl = re.findall(r'<img referrerpolicy="no-referrer" src="//www.doutula.com/img/loader.gif" style="width: 100%; height: 100%;" data-original="(.*?)".*?'
                        r'alt="(.*?)".*?class="img-responsive lazy image_dta"',html,re.S)
    #print(imgurl)

    for img in imgurl:
        # print(img[0])
        try:
            title = img[1]
            imgget = requests.get(img[0])
            with open('img1/%s.jpg'%title,"wb") as openimg:
                openimg.write(imgget.content)
        except Exception as err:
            print(err)

        print("正在下载:%s"%title)
        
案例二的运行结果:(由于爬取内容多,只截取了其中的一部分)

 

 

 

 

 

 

 

 

 

 

 

 

 

备注:①:这个需要注意的是网页图片不是整体呈现给你,而是一页一页的,如果不使用while循环,运行的结果是它只爬取当页的内容,你想爬取第二页,解决办法只能是修改源代码(很错误的做法),而使用while循环就能解决上述面临的问题

②:由于网站的源代码是开源,不同的浏览器你可能得到的源代码是不一样的,这就需要你进行异常处理(本博主在爬取的过程中,其中几个图片的地址和大部分的地址不一样,程序在运行过程中,一遇到这些地址代码则终止程序,不会爬取下面符合条件的图片-----可以在我的博客里找到python进阶-----异常处理这篇文章,你会有所收获)

 

3.案例三:爬取美女照片:案例代码如下:(如有违规,联系博主,我会删除案例三

import requests
import re

def guturl(num):
    # drrik()
    # 用get 请求访问一个网站
    r = requests.get('https://www.suibianlu.com/meitu_%s/'%num)
    # 编码 格式
    r.encoding = 'utf-8'
    # 以文本的格式输出
    a = r.text
    html = re.findall(r'<ul class="list-meizitu border pd5 mb10 clearfix">.*?</ul>', a, re.S)[0]
    urll = re.findall(r'<img src="(.*?)"', html, re.S)
    tilate = re.findall(r'alt="(.*?)"', html, re.S)
    i= 0
    for img in urll:
        aaa = tilate[i]
        i += 1

        imgres = requests.get(img)
        try:
            with open('img/%s.jfif'%aaa,'wb') as aff:
                aff.write(imgres.content)
        except:
            pass
        print("正在下载:%s"%aaa)
# def drrik():
#     for inn in range(15):
#         os.mkdir('img/美图文件%s'%inn)
def ru():
    for i in range(14):
        guturl(i)

if __name__ == '__main__':
    ru()
案例三的运行结果:(由于爬取内容多,只截取了其中的一部分)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

备注:案例三如有违规我立马删!!!

  • 6
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值