Support CCTV Plamforms
This commit is contained in:
@@ -195,3 +195,4 @@
|
|||||||
3. **反爬虫处理**: 添加更复杂的反爬虫绕过机制
|
3. **反爬虫处理**: 添加更复杂的反爬虫绕过机制
|
||||||
4. **性能监控**: 添加性能监控和统计功能
|
4. **性能监控**: 添加性能监控和统计功能
|
||||||
5. **内容质量**: 增加内容质量检测和过滤机制
|
5. **内容质量**: 增加内容质量检测和过滤机制
|
||||||
|
|
||||||
|
|||||||
@@ -176,3 +176,4 @@ python manage.py crawl_all_media
|
|||||||
## 查看结果
|
## 查看结果
|
||||||
|
|
||||||
爬取完成后,可以通过Django管理界面或导出命令查看爬取的文章数据。
|
爬取完成后,可以通过Django管理界面或导出命令查看爬取的文章数据。
|
||||||
|
|
||||||
|
|||||||
@@ -3,36 +3,32 @@ from core.models import Website
|
|||||||
from core.utils import full_site_crawler
|
from core.utils import full_site_crawler
|
||||||
|
|
||||||
|
|
||||||
|
# jimmy.fang:20250815: 因 CCTV 的视频有做加密动作,无法下载,移除支持
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "全站递归爬取 中央广播电视总台及其子网站、客户端、新媒体平台"
|
help = "全站递归爬取 中央广播电视总台及其子网站、客户端、新媒体平台"
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
parser.add_argument('--platform', type=str, default='all',
|
parser.add_argument('--platform', type=str, default='all',
|
||||||
choices=['cctv', 'cctvnews', 'mobile', 'all'],
|
choices=['cctv', 'cctvnews', 'mobile', 'all'],
|
||||||
help='选择爬取平台: cctv(央视网), cctvnews(央视新闻), mobile(移动端), all(全部)')
|
help='选择爬取平台: cctv(央视网), cctvnews(央视新闻), all(全部)')
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
platform = options['platform']
|
platform = options['platform']
|
||||||
|
|
||||||
# 中央广播电视总台各平台配置
|
# 中央广播电视总台各平台配置
|
||||||
platforms = {
|
platforms = {
|
||||||
'cctv': {
|
# jimmy.fang:20250815: 因 CCTV 的视频有做加密动作,无法下载,移除支持
|
||||||
'name': '央视网',
|
# 'cctv': {
|
||||||
'base_url': 'https://www.cctv.com',
|
# 'name': '央视网',
|
||||||
'start_url': 'https://www.cctv.com',
|
# 'base_url': 'https://www.cctv.com',
|
||||||
'article_selector': 'a'
|
# 'start_url': 'https://www.cctv.com',
|
||||||
},
|
# 'article_selector': 'a'
|
||||||
|
# },
|
||||||
'cctvnews': {
|
'cctvnews': {
|
||||||
'name': '央视新闻',
|
'name': '央视新闻',
|
||||||
'base_url': 'https://news.cctv.com',
|
'base_url': 'https://news.cctv.com',
|
||||||
'start_url': 'https://news.cctv.com',
|
'start_url': 'https://news.cctv.com',
|
||||||
'article_selector': 'a'
|
'article_selector': 'a'
|
||||||
},
|
|
||||||
'mobile': {
|
|
||||||
'name': '央视移动端',
|
|
||||||
'base_url': 'https://m.cctv.com',
|
|
||||||
'start_url': 'https://m.cctv.com',
|
|
||||||
'article_selector': 'a'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,8 +233,12 @@ def process_article(url, website):
|
|||||||
soup.find("div", id="content") or
|
soup.find("div", id="content") or
|
||||||
soup.find("div", class_="text") or
|
soup.find("div", class_="text") or
|
||||||
soup.find("div", class_="main-content") or
|
soup.find("div", class_="main-content") or
|
||||||
soup.find("div", class_="article")
|
soup.find("div", class_="article") or
|
||||||
|
# 添加央视新闻特有的内容容器
|
||||||
|
soup.find("div", class_="content_area") or
|
||||||
|
soup.find("div", id="content_area")
|
||||||
)
|
)
|
||||||
|
|
||||||
elif "求是" in website.name:
|
elif "求是" in website.name:
|
||||||
# 求是网站的文章结构处理 - 修复两个标题问题
|
# 求是网站的文章结构处理 - 修复两个标题问题
|
||||||
title_tag = (
|
title_tag = (
|
||||||
@@ -553,7 +557,6 @@ def process_article(url, website):
|
|||||||
title_tag = (
|
title_tag = (
|
||||||
soup.find("h1", class_="title") or
|
soup.find("h1", class_="title") or
|
||||||
soup.find("h1") or
|
soup.find("h1") or
|
||||||
soup.find("p", class_="f_container_title") or # 添加中国妇女报特有标题容器
|
|
||||||
soup.find("title")
|
soup.find("title")
|
||||||
)
|
)
|
||||||
content_tag = (
|
content_tag = (
|
||||||
@@ -563,9 +566,7 @@ def process_article(url, website):
|
|||||||
soup.find("div", class_="text") or
|
soup.find("div", class_="text") or
|
||||||
soup.find("div", class_="main-content") or
|
soup.find("div", class_="main-content") or
|
||||||
soup.find("div", class_="article") or
|
soup.find("div", class_="article") or
|
||||||
soup.find("div", class_="article-body") or
|
soup.find("div", class_="article-body")
|
||||||
soup.find("div", class_="f_container_left") or # 添加中国妇女报特有内容容器
|
|
||||||
soup.find("div", class_="f_container") # 添加另一种可能的内容容器
|
|
||||||
)
|
)
|
||||||
elif "法治日报" in website.name or "legaldaily" in website.name:
|
elif "法治日报" in website.name or "legaldaily" in website.name:
|
||||||
# 法治日报的文章结构处理 - 修复无法爬取问题
|
# 法治日报的文章结构处理 - 修复无法爬取问题
|
||||||
|
|||||||
@@ -119,3 +119,4 @@ def main():
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user