python爬取军事新闻网站_爬虫爬军采网-程序员宅基地

技术标签: 网络爬虫  Python  

使用了requests和BeautifulSoup库
文档地址: requests
bs4


#!usr/bin/python
# -*- coding:utf8 -*-
"""
https://mil.news.sina.com.cn/roll/index.d.html
获取”中国军情“N页的爬虫,写入json文件中, 每一页的数据写入一个json文件
"""
import os
import json
import requests
from bs4 import BeautifulSoup


class WebSpider(object):

    def __init__(self, page_count):
        print('----------------loading...-----------------')
        self.url = 'https://mil.news.sina.com.cn/roll/index.d.html'
        self.headers = {
    "User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}
        self.page_count = page_count

    def parse(self):
        for page_number in range(1, self.page_count + 1):
            self._parser_and_save(page_number)

    def _get_data(self, page_number):
        params = {
    'page': page_number}
        response = requests.get(self.url, headers=self.headers, params=params)

        return response.content.decode()

    def _parser_and_save(self, page_number):
        html_str = self._get_data(page_number)
        soup = BeautifulSoup(html_str, 'html.parser')
        # 层级选择器
        news_list = soup.select('.linkNews li a')

        news_results = []
        for news in news_list:
            new_dict = dict()
            new_dict['title'] = news.get_text()
            new_dict['url'] = news.get('href')
            news_results.append(new_dict)

        path = os.path.join(os.getcwd(), 'war_news')
        if not os.path.exists(path):
            os.mkdir(path)

        name = 'news_{}.json'.format(page_number)
        filepath = os.path.join(path, name)
        WebSpider._save_to_json(filepath, news_results)

        print('----------------save {} successfully!--------------'.format(name))

    @staticmethod
    def _save_to_json(filepath, obj):
        with open(filepath, 'w', encoding='utf8') as f:
            content = json.dumps(obj, ensure_ascii=False, indent=1)
            f.write(content)


if __name__ == '__main__':
    spider = WebSpider(10)
    spider.parse()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32252957/article/details/108501273

智能推荐

JProfiler 9版本注册码(亲测可用!!!)_jprofiler 注册码-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏13次。按默认选择“Single or evaluation license” ,Name 和 Company 随意填!!!JProfiler 9.2 注册码 [email protected]#23874-hrwpdp1sh1wrn#0620 [email protected]#36573-fdkscp15axjj6#25257 [email protected]#5481-u..._jprofiler 注册码

如何备份和恢复微信、企业微信的数据文件_企业微信备份文件怎么恢复到电脑-程序员宅基地

文章浏览阅读327次,点赞5次,收藏6次。如何备份和恢复微信、企业微信的数据文件_企业微信备份文件怎么恢复到电脑

阿里云Aliplayer播放器列表切换播放视频_aliplayer 视频列表-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏4次。videoDetail.js代码var headerImg,vid,MtsHlsUriToken,videoSrc;var getvoice = { "action": "courseChapterList", "groupId": "0", "pageIndex": "1", "pageSize": "999", "productId": _id, "rankType":..._aliplayer 视频列表

Windows下使用HAXM加速Android模拟器(以x86方式运行)_haxm window 6.1-程序员宅基地

文章浏览阅读4.4k次。intel的HAXM可以使android模拟器 以x86方式运行,速度大大提升,本质发生改变。原文:http://software.intel.com/zh-cn/articles/speeding-up-the-android-emulator-on-intel-architecture1,首先配置hosts可以下载android镜像203.208.46.20_haxm window 6.1

【OnnxRuntime】在linux下编译并安装C++版本的onnx-runtime_onnxruntime linux-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏22次。通过按照上述步骤,您应该能够在Linux上成功安装ONNX Runtime。请注意,安装过程中可能需要根据您的系统和需求进行适当的调整。// 首先创建一个conda环境,因为./build.sh实际上调用的是./tools/cl_build/build.py。这将使用所有可用的CPU核心进行编译。如果希望使用指定数量的核心,可以将$(nproc)替换为所需的核心数量。安装CMake:可以通过包管理器(如apt、yum等)安装CMake。安装C++编译器:确保系统中已安装C++编译器,如GCC或Clang。_onnxruntime linux

Ubuntu 18.04 + Hadoop-3.1.3 伪分布式环境安装测试全过程_ubuntu 18.0.4 进行 hadoop 的伪分布模式的配置与测试,并记录详细过程-程序员宅基地

文章浏览阅读928次。环境Ubuntu18、openjdk-9、Hadoop3.1.3因为近期网络问题,hadoop是阿里云的镜像,Ubuntu和jdk是华为云的镜像。准备工作更新aptsudo apt-get update安装SSH、配置SSH无密码登陆sudo apt-get install openssh-serverssh localhostexit ..._ubuntu 18.0.4 进行 hadoop 的伪分布模式的配置与测试,并记录详细过程

随便推点

单片机路抢答器与Proteus仿真:嵌入式开发实践-程序员宅基地

文章浏览阅读128次。通过本文的介绍,我们学习了如何设计和实现一款单片机路抢答器,并使用Proteus进行仿真验证。主控单元通过IO口向被控单元发送信号,被控单元接收到信号后点亮相应的LED。在本文中,我们将介绍如何设计和实现一款单片机路抢答器,并通过Proteus仿真进行验证。在Proteus中,我们可以将单片机的代码加载到仿真环境中,并模拟输入输出信号。如果LED能够按照设定的时间间隔正确地点亮和熄灭,那么我们的设计就是正确的。如果你有任何问题,请随时提问。在定时器中断服务程序中,我们可以编写代码来控制LED的点亮和熄灭。

历时3年研发,OPPO发布首颗自研NPU芯片:马里亚纳 MariSilicon X-程序员宅基地

文章浏览阅读1.5k次。作者 | 凌敏 自研 NPU 芯片,可能只是一个开始。 OPPO 发布首颗自研 NPU 芯片 在 12 月 14 日举行的 OPPO 未来科技大会 2021 ..._马里亚纳 泽库

linux下 cuda8,9,10 对应的cudnn 下载网盘链接分享_cudnn8.9 百度网盘-程序员宅基地

文章浏览阅读1.7k次。https://pan.baidu.com/s/10Bm48r7-qruAAzh9-wgPigbsir_cudnn8.9 百度网盘

小米mx250显卡安装不上_小米搅局笔记本电脑市场,新品还是熟悉的价格,但配置全面升级了...-程序员宅基地

文章浏览阅读100次。今天,小米官方正式宣布推出了一款增强版的小米笔记本Air,和上一代相比,外观上无任何差别,本次只在硬件配置上作出了全面升级。在价格方面,依然还是熟悉的价格,全系3599元起,本周四将正式开售。升级后的小米笔记本Air,处理器从原来的第七代酷睿处理器升级为了第八代,性能上有所提升。拥有超长续航,续航时间可达5-8小时,支持1C快充技术,35分钟可充电50%。此外在音质方面,内置哈曼全频扬声器,专业级..._小米ruby升级显卡

esxi6.7.0最新版本下载_esxi6.7 zip下载-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏3次。官方链接https://download2.vmware.com/software/esx/67/VMware-ESXi-6.7.0-8169922-depot.zip?HashKey=3083b68c2453a98413e43feb30ac96c8&params=%7B%22custnumber%22%3A%22dGRlaCVlQCpldw%3D%3D%22%2C%22sourcefilesize%22%3A%22324.97+MB%22%2C%22dlgcode%22%3A%22ESXI670_esxi6.7 zip下载

mysql5.7 实现分组后组内排序功能 ROW_NUMBER() OVER (PARTITION BY)_mysql 5.7 如何row_number 分组排序-程序员宅基地

文章浏览阅读1.4k次。深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。_mysql 5.7 如何row_number 分组排序

推荐文章

热门文章

相关标签