在之前的一些文章之中已经介绍过使用python爬虫是如何将一个网页数据全部抓取回来的,那么有些小伙伴就想知道怎么样才可以只抓取网页之中的图片 。下面会以实际的代码示例来讲解一下python批量爬取图片要怎么去实现,一起往下看看吧 。
文章插图
1.python爬虫说白了就是访问网站然后将数据给抓取返回到程序中,那么网站之中的每一张图片实际上都是以链接的形式保存起来的 。要抓取一个网站中所有图片的话要先右键图片然后点击检查,就可以看到它的链接了,将其复制下来 。
2.图片链接复制下来之后打开python编辑器开始编写代码,首先需要导入requests这个能访问网页的模块 。然后用for循环去迭代的爬取图片,循环的条件就是图片的数量,示例如下所示:
import requestsfrom bs4 import BeautifulSoupfor i in range(5680,5780): url = f'http://124.223.19.18/datu/{i}.html' # 网址 response = requests.get(url,headers=headers) html = response.text urls = re.findall('<img src=https://www.ycpai.cn/python/"(.*?)" alt=".*?" />
',html) # 用正则表达式解析出图片链接【Python如何批量爬取图片?Python爬虫抓取图片代码怎么写】3.那么在得到了图片链接之后,还需要去进行一下为空判断,否则代码运行时会引发异常 。只有在有图片链接存在的情况下才能调用os模块去将图片给保存起来,先创建出来一个变量作为图片保存的路径 。然后用循环urls这个保存了图片链接的数组,调用open()函数来保存图片即可,示例如下所示:
if urls != [] : pathname = soup.select(f'#post-{i} > div:nth-child(1) > div > header > h1')[0].text path = f'D:\\Practice\\pt\\tmp\\{pathname}\\'if not os.path.exists(path): os.makedirs(path)j = 0 for url1 in urls: with open(path + str(j) + '.jpg', "wb") as f: resp = requests.get(url1,headers=headers) f.write(resp.content) j+=1以上就是关于“Python如何批量爬取图片?Python爬虫抓取图片代码怎么写”的全部内容了,希望对你有所帮助 。
推荐阅读
- Python如何打开压缩包?Python解压文件要用什么方法
- python中数据分析Pandas有何特点?python中Pandas有什么优点?
- Python安装whl文件失败怎么办?Python安装whl文件报错如何解决
- python如何使得列表逆序输出元素?python列表逆序放置的方法
- Python中pycharm编辑器界面风格修改方法 pycharm编辑器设置界面
- 新手学python应该下哪个版本?Python2与Python3有何区别?
- 在Pycharm中如何修改文件默认打开方式?Pycharm中修改文件默认打开方式的方法
- python中的随机数如何产生? random随机数模块应用
- 如何解决pycharm不显示代码提示问题?pycharm不显示代码提示的解决方法
- python中关于Numpy的属性有哪些?python中关于数组的属性有什么?