如何从bs4.element提取网页script中的image字段字符串值?
提取JavaScript数组中的image字段值
你可以通过提取脚本内容、解析JSON格式数据来获取所有image字段的值,具体实现如下:
完整代码
from bs4 import BeautifulSoup import requests import re import json def get_image_urls(): url = 'https://dynasty-scans.com/chapters/liar_satsuki_can_see_death_ch28_6#6' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 获取目标script标签的文本内容 script_content = soup.find_all('script')[1].string # 正则匹配pages数组的JSON结构部分 match = re.search(r'var pages = (\[.*?\]);', script_content, re.DOTALL) if match: # 替换HTML转义的双引号为标准格式 json_str = match.group(1).replace('"', '"') # 解析为Python可操作的列表对象 pages = json.loads(json_str) # 提取所有image字段的值 image_urls = [page['image'] for page in pages] # 打印结果(也可根据需求保存或进一步处理) for img_url in image_urls: print(img_url) return image_urls get_image_urls()
关键步骤说明
- 提取脚本内容:通过
soup.find_all('script')[1].string获取目标脚本的纯文本,跳过HTML标签结构 - 正则匹配数组:用
r'var pages = (\[.*?\]);'精准定位数组内容,re.DOTALL参数允许匹配跨换行的文本 - 修复JSON格式:将HTML转义字符
"替换为标准双引号,确保json.loads()能正常解析 - 提取目标字段:将解析后的列表遍历,用列表推导式快速取出所有
image字段的值
内容的提问来源于stack exchange,提问作者Szymon42214
相关产品推荐
相关产品推荐

