使用BeautifuleSoup分页下载壁纸

一、使用BeautifuleSoup分页下载壁纸
1、 创建加载页面的方法,用于抓取html网页信息
2、 编写保存壁纸图片的方法
3、 编写获取分页url地址的方法
4、 编写运行的主方法
二、实现的步骤
1、 编写加载url页面地址的方法,返回html

#加载要抓取的页面并获取html内容的方法
def loadPage(surl):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’
}
request = urllib.request.Request(surl, headers=headers)
html = urllib.request.urlopen(request)
#print(str(html.read(),encoding=“gbk”))
return str(html.read(),encoding=“gbk”)
2、 编写保存壁纸图片的方法

#编写保存图片到文件的方法
def saveImageTofile(imgName,imginfo):
f=open(“d:\jpg\”+imgName,“wb”)#jpg文件夹应该先创建出来
f.write(imginfo)
f.close()

3、 获取url分页地址的方法,并调用loadPage方法进行调用,并解析html中的图片路径

#编写获取分页获取网页并解析网页中图片地址的方法,获取图片的url路径并保存到文件中
def findImage(url,startPageNum,endPageNum):
fullurl=""
for i in range(startPageNum,endPageNum):
if i0 or i1:
fullurl=“http://www.netbian.com/weimei/index.htm”
else:
fullurl=“http://www.netbian.com/weimei/index_”+str(i)+".htm"
print(fullurl)
html=loadPage(fullurl)
bs=BeautifulSoup(html,“html.parser”)
#print(bs.text)
# 查找img标签的url的图片的名称
###########查找页面中所有图片列表的层########################
imgdivs=bs.find_all(“div”,class_=“list”);
for div in imgdivs:
#从div层中获取所有的ul标签对象
imgs=div.find_all(“img”)
for img in imgs:
#print(img[‘src’])#获取img标签的img属性值
#print(img[‘alt’])#获取img标签的alt属性值
imgurl=img[‘src’]
imagename=img[‘alt’]
#将图片名称中的/替换为_
imagename=imagename.replace("/","_")
print(imgurl)
print(imagename)
#通过图片的url地址获取图片信息
imginfo=urllib.request.urlopen(imgurl)
saveImageTofile(imagename+".jpg",imginfo.read())#调用保存图片的方法
print("=================")
time.sleep(2)#等待2秒后继续保存!

    print("=================")

4、 完整代码如下

from bs4 import BeautifulSoup
import urllib.request
import os
import time
#加载要抓取的页面并获取html内容的方法
def loadPage(surl):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’
}
request = urllib.request.Request(surl, headers=headers)
html = urllib.request.urlopen(request)
#print(str(html.read(),encoding=“gbk”))
return str(html.read(),encoding=“gbk”);

#编写保存图片到文件的方法
def saveImageTofile(imgName,imginfo):
f=open(“d:\jpg\”+imgName,“wb”)#jpg文件夹应该先创建出来
f.write(imginfo)
f.close()

#编写获取分页获取网页并解析网页中图片地址的方法,获取图片的url路径并保存到文件中
def findImage(url,startPageNum,endPageNum):
fullurl=""
for i in range(startPageNum,endPageNum):
if i0 or i1:
fullurl=“http://www.netbian.com/weimei/index.htm”
else:
fullurl=“http://www.netbian.com/weimei/index_”+str(i)+".htm"
print(fullurl)
html=loadPage(fullurl)
bs=BeautifulSoup(html,“html.parser”)
#print(bs.text)
# 查找img标签的url的图片的名称
###########查找页面中所有图片列表的层########################
imgdivs=bs.find_all(“div”,class_=“list”);
for div in imgdivs:
#从div层中获取所有的ul标签对象
imgs=div.find_all(“img”)
for img in imgs:
#print(img[‘src’])#获取img标签的img属性值
#print(img[‘alt’])#获取img标签的alt属性值
imgurl=img[‘src’]
imagename=img[‘alt’]
#将图片名称中的/替换为_
imagename=imagename.replace("/","_")
print(imgurl)
print(imagename)
#通过图片的url地址获取图片信息
imginfo=urllib.request.urlopen(imgurl)
saveImageTofile(imagename+".jpg",imginfo.read())#调用保存图片的方法
print("=================")
time.sleep(2)#等待2秒后继续保存!

    print("=================")

if name == ‘main’:
findImage(“http://www.netbian.com/weimei/index.htm”,1,3)

三、实战分页抓取天涯社区(天涯杂谈)的网页标题信息(分页信息无规律)
1、获取要加载的页面的html代码
#根据指定的url地址加载网页的方法,并返回网页的源代码信息
def loadPage(surl):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’
}
request = urllib.request.Request(surl, headers=headers)
html = urllib.request.urlopen(request)
strhtml=str(html.read(),“utf-8”)
print(strhtml)
return strhtml
2、编写分析网页的方法,对标题信息进行抓取

def findPageUrlTitle(surl,pagenum):
fullurl=surl;
for i in range(1,pagenum+1):
print(“第"+str(i)+"页的标题信息=========”)
if i== 1 :
fullurl=“http://bbs.tianya.cn/list-free-1.shtml”

    html=loadPage(fullurl);
    bs=BeautifulSoup(html,"html.parser")
    #查找标题信息
    titlstags=bs.find_all("td",class_="td-title faceblue")
    ##############获取每一页的标题信息###############################
    for title in titlstags:
        print(title.text.strip())
        print(title.a['href'])
        print('======================')
    ##################################################################
    #获取下一页的标签的信息
    nexpagetr=bs.find("div",class_="short-pages-2 clearfix")
    nexpagetr_links=nexpagetr.find("div",class_="links")
    atags=nexpagetr_links.find("a",attrs={"rel":"nofollow"})
    print(atags['href'])
    fullurl="http://bbs.tianya.cn"+atags['href']
    print("下一页连接地址:",fullurl)
    print("======================================================================")

课堂练习:
(1) 分页抓取http://www.netbian.com/分类的图片,并下载保存到指定文件夹
(2) 抓取天涯社区分类中标题信息和标题内容的第一页信息,并保存到文本文件中,需要抓取标题、作者、发布日期信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值