交流群:687306936
老师QQ:2024964385
笔记可以添加老师QQ领取
第二天 requests基础使用-实战-www.ddooo.com
-
找到数据源
-
发送请求
-
获取数据
-
解析数据
-
存储数据
目标:在搜索框输入关键字爬取所有页面的软件名称,分类,介绍并且存储到csv(excel)文件中
# -*- coding: utf-8 -*- ''' 分析链接 • https://search.ddooo.com/search.html?wd=qq&page=2 • 传递给服务器的参数有些不需要也可以不管是get还是post都一样 • https://search.ddooo.com/search.html?wd=软件&page=2 wd是关键字 page是页数 • url原理:ascii码的十六进制前面加% • 经过测试发现qq关键字一共有22页当输入23时页面变化 • 发现:不存在的页数返回的源代码的长度始终是14417 ''' from requests import get from re import findall from pprint import pprint def 发送请求(wd='qq'): for i in range(1,9999999999999999999999999): response=get(f'https://search.ddooo.com/search.html?wd={wd}&page={i}').text if len(response)==14417: break 软件名称,软件分类,软件介绍=解析源代码(response) 存储数据(软件名称,软件分类,软件介绍) def 解析源代码(response): #提取软件名称 软件list=list() #软件名称list=[] p1='<a class="pic" target="_blank" href=".*?" title=".*?"><font color="red">(.*?)</font>(.*?)</a>' 软件名称=findall(p1,response) for i in 软件名称: a=''.join(i) #以指定符号进行拼接 软件list.append(a) #把a添加到列表的末尾 #提取软件分类 p1='<span><label>分类:</label>(.*?)</span>' 软件分类=findall(p1,response) #提取软件介绍 p1='<p class="desc">(.*?)</p>' 软件介绍=findall(p1,response) return 软件list,软件分类,软件介绍 def 存储数据(*key): 名称=key[0] 分类=key[1] 介绍=key[2] with open('data.csv','a',encoding='utf-8') as f: #a代表追加模式 f.write('软件名称,软件分类,软件介绍\n') for i in range(len(名称)): f.write(名称[i]+','+分类[i]+','+介绍[i]+'\n') 发送请求('qq')