一.先看实际运行效果![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b9ac24dab80ccb0e0da1d0d54aea9c5f.png)
二.接下来讲代码
下面是完整代码:
from bs4 import BeautifulSoup # 贵族名宠网页爬虫
import requests
import urllib.request
# 网址
url = 'http://www.hengdadog.com/sale-1.html'
def allpage(): # 获得所有网页
all_url = []
for i in range(1, 8):
each_url = url.replace(url[-6], str(i)) # 替换
all_url.append(each_url)
return (all_url) # 返回地址列表
if __name__ == '__main__':
img_url = allpage() # 调用函数
for url in img_url:
# 获得网页源代码
print(url)
requ = requests.get(url)
req = requ.text.encode(requ.encoding).decode()
html = BeautifulSoup(req, 'lxml')
t = 0
# 选择目标url
img_urls = html.find_all('img')
for k in img_urls:
img = k.get('src') # 图片
print(img)
name = str(k.get('alt')) # 名字,这里的强制类型转换很重要
type(name)
# 保存图片并且命名
path = 'H:\\新建文件夹\\贵族名宠\\' # 路径
file_name = path + name + '.jpg'
imgs = requests.get(img) # 存储入文件
try:
urllib.request.urlretrieve(img, file_name) # 打开图片地址,下载图片保存在本地,
except:
print("error")
1.首先,你得有上面的几个库,自行安装,直接使用pip命令即可,这里不做介绍
2.定义的allpage()方法的作用是构建网址列表
这里主要是用的字符串的replace方法,对于复杂的网址构建,推荐使用正则表达式,正则需要花一点时间(稍微需要记忆一些东西),这里就采用简单的替换了
3.请求与解析
有了网址列表,就只需要遍历整个列表,分别利用request库的方法去请求,然后使用BeautifulSoup来进行数据的解析,获取目标数据。当然了,解析的方法有很多种,比如说正则(有点难度),xpath(最为推荐,也是笔者用的最顺手的方法,简单而且强大)
4.关于python中的几种文件操作
最后便是数据的存储(包括文件存储,数据库存储),由于这里是图片数据,简单的,存到文件中即可。下面着重介绍几种python惯用的几种文件操作方式。
- 1.python专用方法
#保存文件的方法1
try:
t+=1
with open(file_name,'ab+') as f:
f.write(imgs.content)
print('第%d张图片正在下载' %t)
except:
print('error')
- 2.最普通的方法
#保存文件的方法2
try:
f = open(file_name, 'ab+') #打开
f.write(imgs.content) #写入
f.close() #关闭
except:
print('error')
更多关于爬虫的代码请参考gitee仓库
https://gitee.com/lk0423/spider