如何提取WordPress站点各页面的视频链接(适配动态post ID)
嘿,我来帮你搞定这个WordPress视频链接提取的问题!既然每个页面只有一个视频,而且post编号是随机的,那我们只需要把原来的选择器改成通用型的就行,不用依赖固定的post ID。下面给你几个靠谱的解决方案:
1. 用通用的XPath/CSS选择器定位视频iframe
WordPress绝大多数主题都会把文章内容放在一个带有固定类名的容器里(比如entry-content,这是官方默认主题的标准类),我们可以跳过随机的post ID,直接定位到内容区域里的iframe:
XPath写法
如果内容容器是entry-content:
//div[@class='entry-content']/p/iframe
要是页面里只有这一个iframe,甚至可以更简单:
//iframe
如果视频来自特定平台(比如YouTube),还可以通过src属性过滤:
//iframe[contains(@src, 'youtube.com')]
CSS选择器写法
对应上面的XPath,CSS选择器可以这么写:
.entry-content p iframe
或者直接取唯一的iframe:
iframe
同样,按平台过滤的话:
iframe[src*="youtube.com"]
👉 小技巧:你可以打开Chrome开发者工具的Elements面板,按Ctrl+F输入你写的选择器,就能实时验证是否能准确定位到视频iframe啦!
2. 直接提取iframe的src属性(代码示例)
因为每个页面只有一个视频,所以不管用什么爬虫工具,直接取页面里的第一个(也是唯一的)iframe的src属性就是视频链接。这里给你两个常用工具的示例:
Python + BeautifulSoup
from bs4 import BeautifulSoup import requests # 替换成你要爬的页面URL target_url = "https://example.com/your-page" response = requests.get(target_url) soup = BeautifulSoup(response.text, "html.parser") # 提取唯一的iframe的src video_link = soup.find("iframe")["src"] print("提取到的视频链接:", video_link)
Scrapy框架
def parse(self, response): # 提取第一个iframe的src属性 video_url = response.xpath("//iframe/@src").get() yield { "page_url": response.url, "video_url": video_url }
3. 基于iframe的特殊属性定位
如果你的页面里有多个iframe,但视频iframe有专属的class、width等属性,比如class="video-player",那可以用这些特征精准定位:
- XPath:
//iframe[@class='video-player'] - CSS选择器:
iframe.video-player
这样不管post ID怎么变,都能准确找到对应的视频iframe啦!
内容的提问来源于stack exchange,提问作者user8298092
相关产品推荐
相关产品推荐

