Python——爬虫学习2

简介: BeautifulSoup插件的使用这个插件需要先使用pip安装(在上一篇中不再赘言),然后再程序中申明引用from bs4 import BeautifulSouphtml=self.requests(url)#调用requests函数把套图地址传入会返回一个responseall_a=BeautifulSoup(html.

BeautifulSoup插件的使用

这个插件需要先使用pip安装(在上一篇中不再赘言),然后再程序中申明引用

from bs4 import BeautifulSoup

html=self.requests(url)#调用requests函数把套图地址传入会返回一个response
all_a=BeautifulSoup(html.text,'lxml').find('div',class_='all').find('li').find_all('a')

这里find方法只会查找第一个匹配的元素,所以返回的是一个对象,find_all方法会查找所有匹配的元素,所以返回的是list

在使用网页文本的时候用text,在下载多媒体文件的时候用content。

正式编程

这里对程序进行了一些封装,方便函数的复用

ps:不得不感叹,python的io操作真的是很好用,简单方便,敲几下键盘就搞定,比起C#的各种参数真是太简洁!!!

import requests
from bs4 import BeautifulSoup
import os

class mzitu():
    
    def __init__(self):
        self.headers={'User-Agent':'Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/535.24(KHTML,like Gecko)Chrome/19.0.1055.1 Safari/535.24'}
        #self.route="D:\GITHUB\学习Python\爬虫基础教程mzitu\mzitu"

    def all_url(self,url):
        html=self.requests(url)#调用requests函数把套图地址传入会返回一个response
        all_a=BeautifulSoup(html.text,'lxml').find('div',class_='all').find('li').find_all('a')
        for a in all_a:
            title=a.get_text()
            print(u'开始保存:',title)#加一点提示,不然太枯燥了
            path=str(title).replace("?",'_')
            path = str(title).replace("?", '_') ##我注意到有个标题带有 ?  这个符号Windows系统是不能创建文件夹的所以要替换掉
            if self.mkdir(path):#调用mkdir函数创建文件夹
                href=a['href']
                self.html(href)#调用html函数把href参数传递过去
        print(u'共找到资源:',len(all_a),u'')

    def html(self,href): ##这个函数是处理套图地址获得图片的页面地址
        html=self.requests(href)#调用requests函数
        self.headers['referer']=href
        max_span=BeautifulSoup(html.text,'lxml').find('div',class_='pagenavi').find_all('span')[-2].get_text()
        for page in range(1,int(max_span)+1):
            page_url=href+'/'+str(page)
            self.img(page_url)#调用img函数

    def img(self,page_url): ##这个函数处理图片页面地址获得图片的实际地址
        img_html=self.requests(page_url)
        img_url=BeautifulSoup(img_html.text,'lxml').find('div',class_='main-image').find('img')['src']
        self.save(img_url)#调用save函数

    def save(self,img_url): ##这个函数保存图片
        name=img_url[-9:-4]
        img=self.requests(img_url)
        f=open(name+'.jpg','ab')
        f.write(img.content)
        f.close()
        

    def mkdir(self,path): ##这个函数创建文件夹
        path=path.strip()
        isExists=os.path.exists(os.path.join("D:\GITHUB\学习Python\爬虫基础教程mzitu\mzitu",path))#创建一个存放套图的文件夹
        if not isExists:
            print(u'创建了',path,u'文件夹!')
            os.makedirs(os.path.join("D:\GITHUB\学习Python\爬虫基础教程mzitu\mzitu",path))
            os.chdir(os.path.join("D:\GITHUB\学习Python\爬虫基础教程mzitu\mzitu",path))#切换到目录
            return True
        else:
            print(u'名字叫做',path,u'的文件夹已经存在了!')
            return False

    def requests(self,url): ##这个函数获取网页的response 然后返回
        content=requests.get(url,headers=self.headers)
        return content

Mzitu=mzitu()#实例化
Mzitu.all_url('http://www.mzitu.com/all')##给函数all_url传入参数 当作启动爬虫(就是入口)

运行脚本,下载后到文件夹去看看,效果很惊艳!

 

目录
相关文章
|
11天前
|
Python
python学习3-选择结构、bool值、pass语句
python学习3-选择结构、bool值、pass语句
|
2天前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
2天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
3天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
2天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
3天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
4天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
8天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
10天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
19 0
|
10天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
53 0