BeautifulSoup爬取多个网页的图片并保存到本地文件夹

本文介绍了如何使用Python的BeautifulSoup库从网页中爬取图片,包括解决ValueError错误和过滤不需要的图片链接的问题。作者通过观察和调试,找到了问题的根源,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成


前言

这篇文章是提取网页里的图片,是上一篇提取文本的下文。


提示:以下是本篇文章正文内容,下面案例可供参考

一、利用BeautifulSoup爬取图片

BeautifulSoup 是 python 的一个库,最主要的功能是从网页抓取数据。

二、遇到的问题

1.提取的图片链接总是报错:ValueError:invalid literal for int() with base 10: ‘image’

这个错误折磨了我很久,翻来覆去总是不知道怎么解决。错误如下所示:
在这里插入图片描述
终于有一天下午,我仔细观察了要爬取的图片的链接,也就是img标签下的伤src,才恍然明白,原来这里的图片链接并不是标准的HTTP地址。我在自己用别的网页(例如豆瓣,微博)来爬图片的时候,都没有遇到过这个问题,理所当然的也把这个网页里的src链接当成规范的的,怪不得用soup.find_all()提取到的链接都是奇怪的样子,还是经验太少。如下图所示:
在这里插入图片描述

解决此问题代码如下:

complete_img_src = 'https://academy.binance.com'+i.get('src')

即,把不完整的链接加上网站的头

2.怎么过滤掉目标网页中不需要的图片链接

解决了上一个问题,我以为程序可以正常运行了,结果,事情总是事与愿违!又是不知道哪里错了。把PyCharm里爆出的错误,到百度里去找,还有英文网站,但是就是没有解决办法。也是突然间,我想到了一个办法,把所有获取的图片链接,打印出来,看看是哪里出现了错误,于是就有了最终的代码里的各种注释。
打印出来所有的img链接,突然发现,第一个img标签里的src链接很奇怪,根本就是我需要的链接。这才明白原理问题出在这里。由于解决这个Bug过于高兴,忘了截图,就不放图了。
解决第一个链接不是目标链接的办法,分析几张图片链接的形式,用start_with函数过滤一下:

if img_src.startswith('/_next/image?url=https'):

三、代码和结果截图

下图是爬取到的图片,这是一个国外的网站,我还用的VPN,速度很慢,为了提高速度,只爬取了两页文章的封面图:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您可以使用Python的os和BeautifulSoup库来爬取本地多个文件夹下的HTML数据,并使用Python的MySQL Connector库将数据写入MySQL数据库首先,需要安装以下库: BeautifulSoup:用于解析HTML数据 - MySQL Connector:用于连接MySQL数据库 您可以使用以下代码来实现这个功能: ```python import os from bs4 import BeautifulSoup import mysql.connector # 配置MySQL数据库连接 config = { 'user': 'your_username', 'password': 'your_password', 'host': 'localhost', 'database': 'your_database_name', 'raise_on_warnings': True } # 连接MySQL数据库 conn = mysql.connector.connect(**config) cursor = conn.cursor() # 遍历文件夹 root_folder = 'your_root_folder_path' for root, dirs, files in os.walk(root_folder): for file in files: if file.endswith('.html'): file_path = os.path.join(root, file) # 读取HTML文件内容 with open(file_path, 'r') as f: html_content = f.read() # 解析HTML数据 soup = BeautifulSoup(html_content, 'html.parser') # 提取需要的数据 # ... # 将数据写入MySQL数据库表 # ... # 提交事务 conn.commit() # 关闭数据库连接 cursor.close() conn.close() ``` 在上述代码中,您需要根据实际情况进行相应的配置,如MySQL数据库的用户名、密码、主机名、数据库名,以及根文件夹的路径。然后,遍历文件夹中的HTML文件,读取文件内容并使用BeautifulSoup解析HTML数据,然后将提取的数据写入MySQL数据库中。 请注意,上述代码仅提供了一个框架,您需要根据实际需要进行适当的修改和完善,包括提取需要的数据和将数据写入数据库的具体实现。 希望能对您有所帮助!如有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值