• 爬虫----爬取搜狐新闻时政类


    一 、整体流程

    爬取页面:https://www.sohu.com/c/8/1460?spm=smpc.news-home.top-subnav.2.1627024626549cMWiORW

    获取url——爬取出版社及新闻名称及其超链接——解析数据——存储数据

    二、分析

    观察页面发现,搜狐新闻页面属于动态页面(动态页面也可采取selenium获取数据,效率比较慢)

    打开network,XHR并没有想要的内容,所以得换个思路

    network中杂七杂八的请求比较多,可以过滤掉便于查看可疑请求

     在ALL中发现该文件有需要的内容

    分析一下url

     发现page每次变化

    可以采用字符串拼接出来url

    三、代码实现

    import requests
    import re
    
    # 获取数据
    def get_one_page(url):
        response = requests.get(url)
        return response.text
    
    # 采用正则进行提取数据
    def parse_one_page(data):
        result = re.findall(r'("title":".*?").*?("authorName":".*?").*?("originalSource":".*?")', data)
        return result
    # 写入数据
    def write_to_file(content):
        with open('result.txt', 'a', encoding='utf-8') as f:
            f.write(content)
    
    # 根据page获取数据
    def main(page):
        url = "https://v2.sohu.com/public-api/feed?scene=CATEGORY&sceneId=1460&size=20&page=" + str(page)
        data = get_one_page(url)
        for item in parse_one_page(data):
            write_to_file(str(item))
    
    
    if __name__ == '__main__':
        for i in range(1, 20):
            main(page=i)
    

      

    四、结果

  • 相关阅读:
    正则匹配、替换
    C# 算法
    .Net Core 初体验及总结(内含命令大全)
    docker 开放 2375端口
    docker 中 mysql group by 报错
    微信小程序全局变量改变监听
    Linux 中 IDEA 不能调试(Debug)项目
    JavaMail发送邮件后再通过JavaMail接收格式问题
    Linux 安装 RabbitMQ
    SpringBoot 集成 Swagger
  • 原文地址:https://www.cnblogs.com/kun666/p/15050245.html
Copyright © 2020-2023  润新知