php批量获取sitemap.xml里面所有<loc>和</loc>之间的url,并加入list
时间: 2024-02-13 19:03:20 浏览: 22
可以使用以下PHP代码批量获取`sitemap.xml`文件中所有`<loc>`和`</loc>`之间的URL,并加入到一个数组中:
```php
<?php
$file = 'sitemap.xml';
if (file_exists($file)) {
$xml = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA);
$urls = array();
foreach ($xml->url as $url) {
$urls[] = (string) $url->loc;
}
print_r($urls);
} else {
echo "文件不存在!";
}
?>
```
该代码首先使用`file_exists()`函数判断当前目录下是否存在`sitemap.xml`文件,如果文件存在,则使用`simplexml_load_file()`函数将XML文件加载为SimpleXMLElement对象,并使用`foreach`循环遍历所有的`<url>`标签,将其中的`<loc>`标签中的URL加入到一个数组中,最后使用`print_r()`函数输出数组内容。
需要注意的是,`<loc>`标签中的URL可能包含特殊字符,比如空格、&等,需要使用`urlencode()`函数将其进行编码。如果需要将URL解码,可以使用`urldecode()`函数。
相关问题
python <loc>http://www.xfyf1314.com/</loc>获取<loc>和</loc>之间的内容
你可以使用Python自带的字符串处理函数来获取`<loc>`和`</loc>`之间的内容。具体实现如下:
```python
xml_data = '<url><loc>http://www.xfyf1314.com/</loc></url>' # XML数据
start_tag = "<loc>"
end_tag = "</loc>"
start = xml_data.find(start_tag) + len(start_tag) # 获取<loc>标签的起始位置
end = xml_data.find(end_tag) # 获取</loc>标签的结束位置
content = xml_data[start:end] # 获取<loc>和</loc>之间的内容
print(content) # 打印获取到的内容
```
在上面的代码中,我们首先定义了`<loc>`和`</loc>`标签,并将XML数据保存在`xml_data`变量中。然后,我们使用`find`方法分别获取`<loc>`和`</loc>`标签的位置,并计算出它们之间的内容。最终,我们将获取到的内容保存在`content`变量中并打印出来。
python <loc>http://www.xfyf1314.com/</loc>用正则批量获取<loc>和</loc>之间的内容,储存在list变量
你可以使用Python的正则表达式模块`re`来批量获取XML数据中所有`<loc>`和`</loc>`之间的内容,并将其保存在一个列表变量中。具体实现如下:
```python
import re
xml_data = '<url><loc>http://www.xfyf1314.com/</loc><loc>http://www.example.com/</loc></url>' # XML数据
pattern = re.compile(r'<loc>(.*?)</loc>') # 定义正则表达式
matches = pattern.findall(xml_data) # 在XML数据中搜索所有匹配项
contents = []
for match in matches:
content = match.strip() # 获取匹配到的内容并去除两端的空格
contents.append(content) # 将获取到的内容添加到列表变量中
print(contents) # 打印获取到的所有内容
```
在上面的代码中,我们首先导入了Python的正则表达式模块`re`,并将XML数据保存在`xml_data`变量中。然后,我们使用`re.compile`方法定义了一个正则表达式,该正则表达式匹配`<loc>`和`</loc>`之间的任何内容,并使用`findall`方法在XML数据中搜索所有匹配项。最终,我们使用一个循环遍历所有的匹配项,获取匹配到的内容并将其添加到`contents`列表变量中。需要注意的是,我们在获取匹配到的内容时使用了`strip`方法去除了字符串两端的空格。
最终,我们将获取到的所有内容保存在`contents`列表变量中并打印出来。