前言 自从学习编程以来,总是听别人说什么爬虫爬虫的,爬这爬那,我心想老是扒拉来扒拉去不累吗,有啥好爬的,又没啥子用,前两天无聊就想看看python爬取网站的图片到底是什么鬼
前言
自从学习编程以来,总是听别人说什么爬虫爬虫的,爬这爬那,我心想老是扒拉来扒拉去不累吗,有啥好爬的,又没啥子用,前两天无聊就想看看python爬取网站的图片到底是什么鬼,就从网上开始学习,从下载python到配置,从寻找喜欢的网站到爬的盆满钵满,现在我就来总结一下。
准备
1、下载一个python安装并配置环境变量,跟java差不多。
官网下载地址:https://www.python.org/downloads/windows/点击下载
下载installer的,然后安装直接下一步就好,也可以自行选择下载的位置,最后配置环境变量
配置环境变量,将python和Scripts都配置上
验证是否配置成功,cmd打开命令行,输入python -V,如图证明配置环境变量成功
2、脚本
# 导入必要的包from selenium import webdriver
from bs4 import BeautifulSoup
import requests
# 打开谷歌浏览器
driver = webdriver.Chrome()
# 设置要爬取的网站
driver.get('http://pic.netbian.com/4kmeinv/')
# 初始化一个引用计数,用于后面的图片简单命名
index = 1
# 定义爬虫方法
def getImage():
# 将index置为全局变量
global index
# 循环爬取,循环多少次爬取多少页的图片
for i in range(0,50):
# 模拟点击下一页,因为爬取完一页需要点击下一页爬取
driver.find_element_by_link_text("下一页").click()
# 解析网页
html = BeautifulSoup(driver.page_source, 'html.parser')
# 获取原图的url链接
links =html.find('div', {'class': 'slist'}).find_all('img')
# 遍历当页获得的所有原图链接
for link in links:
# 将原图存至当前目录下的jdimg 文件夹,以index命名,后缀名为图片原名的后三位,即jpg或者gif
with open('baidu8/{}.{}'.format(index, link.get('src')[len(link.get('src'))-3: len(link.get('src'))]), 'wb') as jpg:
jpg.write(requests.get("http://pic.netbian.com/" + link.get('src')).content)
print("正在爬取第%s张图片" % index)
index += 1
# 定义主函数
def main():
getImage()
main()
我们用记事本将此脚本写入,然后修改后缀名为py,然后在同级目录下创建一个文件夹用来存储图片,代码里的文件夹必须提前创建好,不然运行报错找不到文件夹,如图
我这里的文件夹就是用来存储图片的,已经存的满满当当
运行脚本
我们cmd进入命令行例如我这里就进入到d盘的test文件夹下,如图
我们输入py baidu.py来运行我们的脚本,前提我们配置好了环境变量,所以可以在任意位置运行python脚本,最后效果如图
** 最新调整**
最近由于很多同学反映下载的图片打不开,应该是有所更新,所有我重新调整了一次源码,现在源码如下。
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
# 打开谷歌浏览器
driver = webdriver.Chrome()
# 设置要爬取的网站
driver.get('http://pic.netbian.com/4kmeinv/')
# 初始化一个引用计数,用于后面的图片简单命名
index = 1
# 定义爬虫方法
def getImage():
# 将index置为全局变量
global index
# 循环爬取,循环多少次爬取多少页的图片
for i in range(0,50):
# 模拟点击下一页,因为爬取完一页需要点击下一页爬取
driver.find_element_by_link_text("下一页").click()
# 解析网页
html = BeautifulSoup(driver.page_source, 'html.parser')
# 获取原图的url链接
links =html.find('div', {'class': 'slist'}).find_all('img')
# 遍历当页获得的所有原图链接
for link in links:
# 将原图存至当前目录下的baidu8文件夹,以index命名,后缀名为jpg
with open('baidu8/{}.jpg'.format(index), 'wb') as jpg:
jpg.write(requests.get("http://pic.netbian.com/" + link.get('src')).content)
print("正在爬取第%s张图片" % index)
index += 1
# 定义主函数
def main():
getImage()
main()
总结
技术是把双刃剑,希望大家合理运用技术,下一次分享爬取小视频的内容,最后说一句,老铁早点睡啊。