<21>python学习笔记——爬虫3——断点续下

用MongoDB数据库记录已下载过的地址

使用PyMongo模块

直接代码:

主程序:

#导入需要的包
from bs4 import BeautifulSoup
import os
from BackClimb import down
from pymongo import MongoClient
import datetime

#建立一个抓图类
class mzitu():

    #创建数据库调用函数
    def __init__(self):
        client = MongoClient()##与MongoDB建立链接,这是默认链接本地MongoDB数据库
        db = client['meinvxiezhenji']##选择一个数据库
        self.meizitu_collection = db['meizitu']##在meinvxiezhenji这个数据库中,选择一个集合
        self.title = ''##用来保存页面主题
        self.url = ''##用来保存页面地址
        self.img_urls = []##初始化一个列表,用来保存图片地址

    #主入口函数
    def all_url(self,url):
        html = down.get(url,3) ##调用request函数吧地址传进去,返回一个response
        all_a = BeautifulSoup(html.text,'lxml').find('div',class_='all').find_all('a')##用Soup对象的find方法找标签先查找class为all的div标签,然后查找所有<a>标签。find_all是查找所有<a>标签
        for a in all_a:
            title = a.get_text()
            self.title = title  ##将主题保存到self.title中
            print(u'开始保存:',title)##提示保存XXX
            path = str(title).replace('?','_')##设置名字变量,将?替换成_
            self.mkdir(path)##调用mkdir函数创建文件夹,path代表的是标题名
            os.chdir('F:\mzitu\\'+path) ##改变工作路径
            href = a['href']##取出<a>里面的href属性
            self.url = href ##将页面地址保存到self.url中
            if self.meizitu_collection.find_one({'主题页面':href}): ##判断这个主题是否已经在数据库中,不在就运行eles下的内容,在则忽略。
                print(u'这个页面已经爬过了!')
            else:
                self.html(href)##调用html函数吧href参数传递过去,href是套图的地址

    #设置一个函数处理套图地址获得图片的页面地址
    def html(self,href):
        html = down.get(href,3)##调用request函数把套图地址传进去,返回一个response
        max_span = BeautifulSoup(html.text,'lxml').find_all('span')[10].get_te
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值