python爬虫 将在线html网页中的图片链接替换成本地链接并将html文件下载到本地 20

如题,我已经可以将html文件和图片下载下来了但是网页中的图片是以链接的方式存在的,怎么让它下载网页的同时将代码中的图片链接修改为本地链接... 如题, 我已经可以将html文件和图片下载下来了 但是网页中的图片是以链接的方式存在的, 怎么让它下载网页的同时将代码中的图片链接修改为本地链接 展开
 我来答
催命鬼儿xp
2022-06-14 · TA获得超过326个赞
知道答主
回答量:147
采纳率:100%
帮助的人:5.2万
展开全部
import os,re
def check_flag(flag):
regex = re.compile(r'images\/')
result = True if regex.match(flag) else False
return result

#soup = BeautifulSoup(open('index.html'))
from bs4 import BeautifulSoup
html_content = '''
<a href="https://xxx.com">测试01</a>
<a href="https://yyy.com/123">测试02</a>
<a href="https://xxx.com">测试01</a>
<a href="https://xxx.com">测试01</a>
'''
file = open(r'favour-en.html','r',encoding="UTF-8")
soup = BeautifulSoup(file, 'html.parser')
for element in soup.find_all('img'):
if 'src' in element.attrs:
print(element.attrs['src'])
if check_flag(element.attrs['src']):
#if element.attrs['src'].find("png"):
element.attrs['src'] = "michenxxxxxxxxxxxx" +'/'+ element.attrs['src']

print("##################################")
with open('index.html', 'w',encoding="UTF-8") as fp:
fp.write(soup.prettify()) # prettify()的作⽤是将sp美化⼀下,有可读性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tyugoku5
2023-03-09
知道答主
回答量:18
采纳率:0%
帮助的人:4340
展开全部
这段Python代码的作用是对网页HTML文件进行解析,并对其中的img标签中的src属性进行修改。具体来说,该代码使用了Python内置的os和re库,以及第三方库BeautifulSoup。
首先,该代码通过打开一个名为'favour-en.html'的HTML文件,使用BeautifulSoup库对其进行解析,将其转化为一个BeautifulSoup对象,存储在变量soup中。然后,该代码遍历soup对象中的所有img标签,并检查其中是否包含'src'属性。
接下来,代码调用了check_flag函数,该函数使用正则表达式判断'src'属性中是否包含字符串'images/',如果包含则返回True,否则返回False。如果check_flag函数返回True,则修改该img标签的'src'属性,在其前面添加字符串'michenxxxxxxxxxxxx'和'/',以此对'src'属性进行修改。修改后的结果被打印出来,并将最终的HTML代码写入到名为'index.html'的文件中。
需要注意的是,在这段代码中,文件读取和写入时指定了编码方式为UTF-8,以确保能够正确读写中文字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
centralkindom1
2022-08-01
知道答主
回答量:13
采纳率:0%
帮助的人:3843
展开全部
import os,re
def check_flag(flag):
regex = re.compile(r'images\/')
result = True if regex.search(flag) else False
return result

#soup = BeautifulSoup(open('index.html'))
from bs4 import BeautifulSoup
html_content = '''
<a href="https://xxx.com">测试01</a>
<a href="https://yyy.com/123">测试02</a>
<a href="https://xxx.com">测试01</a>
<a href="https://xxx.com">测试01</a>
'''
file = open(r'E:\test\favour-fr.html','r',encoding="UTF-8")
soup = BeautifulSoup(file, 'html.parser')
for element in soup.find_all('img'):
if 'src' in element.attrs:
print(element.attrs['src'])
if check_flag(element.attrs['src']):
#if element.attrs['src'].find("png"):
element.attrs['src'] = "michenxxxxxxxxxxxx" +'/'+ element.attrs['src']

print("##################################")
with open('index.html', 'w',encoding="UTF-8") as fp:
fp.write(soup.prettify()) # prettify()的作⽤是将sp美化⼀下,有可读性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8e4ee6d
2018-09-18 · TA获得超过1138个赞
知道小有建树答主
回答量:887
采纳率:78%
帮助的人:366万
展开全部
正则匹配原链接替换为本地路径即可
追问
要是每个图片都用replace会不会增加对网页的解析速度。 xpath不能像Beautifulsoup那样直接对文件进行更改吗
追答
这样的话,建议使用Beautiful Soup,从HTML或XML文件中提取数据比正则更快捷方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式