爬虫爬取壁纸清晰大图实战

用到的库函数

**import os
import requests
import re
import time
from bs4 import BeautifulSoup
#os库用于文件创建
#request BeautifulSoup用于网页获取
#re用于获取连接

分析目标网址
第一页:
http://www.netbian.com/
第二页
http://www.netbian.com/index_2.htm
第三页
http://www.netbian.com/index_3.htm

因此 要爬取多页内容 可以用for循环创建url链接进行爬取
再对网页进行分析
在这里插入图片描述
可以用 BeautifulSoup的select进行抓取

    lis=soup.select('div .list >ul >li >a')

通过for循环遍历lis列表
为了获取href 可以直接通过[‘href’]来获得内容
http://www.netbian.com/desk/22801.htm
的链接 再对其分析 可以得到清晰大图的url在如下在这里插入图片描述
可以再用select语句进行获取 也可以使用正则获取url对象和alt标签

        s=re.compile('alt="(.*?)".*?src="(.*?)"')

对获取到的
http://img.netbian.com/file/2020/0807/1871233011c1435935405e4f52f53ba1.jpg
发送一次request请求
就可以通过读写模块进行下载
这就是大致思路
以下是我的代码 还有很多地方可以优化:
采用多线程加快速率
对request方面的请求可以定义一个函数
生成url标签的方式也可以换一种 防止占用内存

import os
import requests
import re
import time
from bs4 import BeautifulSoup
tj=0
head=       {
"User-Agent": 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36(KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0'
 }
title='http://www.netbian.com/'
dic={}
os.chdir(r'C:\Users\cys\Desktop\bz')
for i in range(1,10):
    if i ==1:
        page='index.htm'
    else:
        page=  'index_'+str(i)+'.htm'
    url1='http://www.netbian.com/dongman/'
    url=url1+page
    req=requests.get(url,headers=head)
    req.encoding='GBK'
    soup=BeautifulSoup(req.text,'lxml')
    lis=soup.select('div .list >ul >li >a')
    for i in lis:
    	 z=i['href']
        urll=title+z
        req=requests.get(urll,headers=head)
        req.encoding='GBK'
        soup=BeautifulSoup(req.text,'lxml')
        lis=soup.select('div .pic > p > a')
        s=re.compile('alt="(.*?)".*?src="(.*?)"')
        ss=re.findall(s,str(lis))
        for a,b in ss:
            lisss=a.split(' ')
            filename=lisss[0]
            name=b.split('/')[-1]
            req=requests.get(b,headers=head)
             html=req.content
            try:
                if os.path.exists(filename):
                    pass
                else:
                    os.mkdir(filename)
                file=open(os.path.join(r'下载地址',filename,name),'wb')
                file.write(html)
                print(name+'写入成功')
                tj=tj+1    
            except IOError as e:
                print(e)
                sys.exit(0)
            finally:
                if 'file' in locals():
                    file.close()
    
   
print('一共写入了'+str(tj)+'张图片')
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值