使用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) 抓取天涯社区分类中标题信息和标题内容的第一页信息,并保存到文本文件中,需要抓取标题、作者、发布日期信息

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用PageHelper分页工具,你需要按照以下步骤进行配置和使用: 1. 引入PageHelper依赖:在你的项目中,添加PageHelper的依赖。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>最新版本号</version> </dependency> ``` 2. 配置PageHelper参数:在你的项目配置文件(如application.properties或application.yml)中,添加PageHelper的配置参数。以下是一个示例配置(以application.properties为例): ```properties # 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 pagehelper.offsetAsPageNum=true # 设置为true时,使用RowBounds分页会进行count查询 pagehelper.rowBoundsWithCount=true # 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 pagehelper.pageSizeZero=true ``` 3. 使用PageHelper进行分页查询:在需要分页的查询方法中,使用PageHelper.startPage方法设置分页信息。例如: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; // ... public List<User> getUserList(int pageNum, int pageSize) { // 开始分页 PageHelper.startPage(pageNum, pageSize); // 执行查询操作,此处省略具体的查询代码,假设查询出了List<User> userList // ... // 使用PageInfo对结果进行封装 PageInfo<User> pageInfo = new PageInfo<>(userList); // 获取分页结果 List<User> pagedUserList = pageInfo.getList(); return pagedUserList; } ``` 在上面的示例中,我们使用PageHelper.startPage方法设置了pageNum和pageSize,然后执行查询操作,接着使用PageInfo对查询结果进行封装。最后,通过调用pageInfo.getList()方法获取分页结果。 这样,你就可以使用PageHelper进行分页查询了。记住,在使用PageHelper分页时,需要注意在查询之前调用PageHelper.startPage方法进行分页设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值