【爬取新浪新闻搜索结果页】-将整个html保存下来

文章目录

  • 一、需求分析
  • 二、代码及步骤实现
  • 三、结果分析

一、需求分析

目标网址:https://search.sina.com.cn/?q=%s&range=all&c=news&sort=time
需求分析:输入搜索关键字进入结果页,获取整个页面的html保存

搜索页
【爬取新浪新闻搜索结果页】-将整个html保存下来_第1张图片
进入页面
【爬取新浪新闻搜索结果页】-将整个html保存下来_第2张图片
需要将上图的html源码保存下来

二、代码及步骤实现

两种方法:

  1. 拼接参数,参数较多的时候适合这种,但是后面涉及分页的时候需要拼接特定参数,输入关键词等功能
  2. 请求页面响应数据,需要获得整个数据,针对反爬措施,使用参数的形式

分析浏览器包图:
确定url路由
【爬取新浪新闻搜索结果页】-将整个html保存下来_第3张图片

获取参数包图分析

【爬取新浪新闻搜索结果页】-将整个html保存下来_第4张图片
可以看到只有看到只有四个参数有值
【爬取新浪新闻搜索结果页】-将整个html保存下来_第5张图片

import requests


def get_news1(key_word):
    '''
    使用requests.get方法的params参数来进行带参数的get请求的数据爬取。
    :param key_word:
    :return:
    '''
    # 确定基础url:?及其之前的内容
    base_url = 'https://search.sina.com.cn/?'
    # 准备参数字典
    params = {
     
        'q': key_word,
        'range': 'all',
        'c': 'news',
        'sort': 'time',
    }
    # 发送请求获取响应
    response = requests.get(url=base_url, params=params)

    with open(f'sina_{key_word}1.html', 'w', encoding='utf-8') as fp:
        fp.write(response.text)

def get_news2(key_word):
    '''
    通过拼接的方式
    这种方式比较好用,但是当参数比较多的时候,建议使用第一种。
    :param key_word:
    :return:
    '''
    base_url = 'https://search.sina.com.cn/?q=%s&range=all&c=news&sort=time'
    #发送请求获取响应
    response = requests.get(base_url %key_word)
    with open(f'sina_{key_word}2.html', 'w', encoding='utf-8') as fp:
        fp.write(response.text)
if __name__ == '__main__':
    key_word = input('请输入要爬取的新闻关键字:')
    get_news2(key_word)

三、结果分析

【爬取新浪新闻搜索结果页】-将整个html保存下来_第6张图片

你可能感兴趣的:(Python爬虫,python,ajax,http,数据分析)