一、需求分析
目标网址:https://search.sina.com.cn/?q=%s&range=all&c=news&sort=time
需求分析:输入搜索关键字进入结果页,获取整个页面的html保存
搜索页
进入页面
需要将上图的html源码保存下来
二、代码及步骤实现
两种方法:
- 拼接参数,参数较多的时候适合这种,但是后面涉及
分页
的时候需要拼接特定参数,输入关键词
等功能 - 请求页面响应数据,需要获得整个数据,针对反爬措施,使用参数的形式
分析浏览器包图:
确定url路由
获取参数包图分析
可以看到只有看到只有四个参数有值
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)