Python从sitemap里提取链接,如果是sitemap-index则抓取xml文件,再通过xml文件抓取url和时间,把url和时间放在一起,存入sqlite数据库,提供代码案例
时间: 2023-04-02 10:03:57 浏览: 145
python 抓取网站制定连接并导出到文件
您好,以下是Python从sitemap里提取链接并存入sqlite数据库的代码案例:
```python
import requests
import sqlite3
import xml.etree.ElementTree as ET
# 定义函数,从sitemap中提取url和时间并存入sqlite数据库
def extract_sitemap(sitemap_url, db_name):
# 请求sitemap文件
response = requests.get(sitemap_url)
# 如果是sitemap-index,则抓取xml文件
if response.content.startswith(b'<?xml'):
root = ET.fromstring(response.content)
# 遍历xml文件,抓取url和时间
for child in root:
sitemap_url = child[].text
extract_sitemap(sitemap_url, db_name)
# 如果是sitemap,则抓取url和时间
else:
root = ET.fromstring(response.content)
urls = []
for child in root:
url = child[].text
lastmod = child[1].text
urls.append((url, lastmod))
# 存入sqlite数据库
conn = sqlite3.connect(db_name)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS urls
(url text, lastmod text)''')
c.executemany('INSERT INTO urls VALUES (?, ?)', urls)
conn.commit()
conn.close()
# 调用函数,提取url和时间并存入sqlite数据库
sitemap_url = 'https://www.example.com/sitemap.xml'
db_name = 'urls.db'
extract_sitemap(sitemap_url, db_name)
```
以上代码可以从指定的sitemap文件中提取url和时间,并存入sqlite数据库中。如果是sitemap-index,则会抓取其中的xml文件并提取其中的url和时间。
阅读全文