今天开始了新的学习,python,了解了request请求的四个步骤分别是
-指定url
-发起请求
-获取响应数据
-持久化存储
同时又了解了UA检测以及UA伪装的意思:
#UA检测:门户网站的服务器会检测对应请求的载体身份表示,检测其是网络爬虫还是一个浏览器
#UA伪装:网络爬虫可以将自己的头部修改成和浏览器一样的,以使门户网站将自己的请求误认为浏览器的请求
下面是两个案例,一个是爬取搜狗搜索页面的内容信息的,另一个是制作一个简单的网页采集器的小测试。
1.爬取搜狗首页
#requst模块 #需求:爬取搜狗首页页面是数据 import requests #下面这句话相当于主函数 if __name__ == '__main__': #step.1 指定url url = 'https://www.sogou.com/' #step.2 发起请求,get方法会返回一个响应对象 response = requests.get(url=url) #step.3 获取响应数据.text返回的是字符串形式的响应数据 page_text = response.text print(page_text) #step.4持久化存储,将爬取到的数据存储到sogou.html中,设置编码utf8,起名fp, with open('./sogou.html','w',encoding='utf-8') as fp: #在fp中写入page_text fp.write(page_text) print('爬取结束!!!!!')
2.制作简单网页采集器
#UA检测:门户网站的服务器会检测对应请求的载体身份表示,检测其是网络爬虫还是一个浏览器 #UA伪装:网络爬虫可以将自己的头部修改成和浏览器一样的,以使门户网站将自己的请求误认为浏览器的请求 import requests if __name__ == '__main__': #UA伪装,将对应的UserAgent封装到一个字典里 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54' } #传递参数时,此处的?保留不保留都可以 #url = 'https://www.baidu.com/s' url = 'https://www.sogou.com/web' #处理url携带的参数:封装到字典中 kw = input('enter a word:') param = { 'query':kw } #对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数 response = requests.get(url=url,params=param,headers=headers) page_text = response.text fileName = kw+'.html' with open(fileName,'w',encoding='utf-8') as fp: fp.write(page_text) print(fileName,'保存成功!!!')
在这两个小demo中,我发现了不同的搜索下,同一个程序可能爬取的东西就不同,因为各个不同的搜索软件对待爬虫的机制不同。
各个搜索软件中使用的搜索参数也有所差异,如百度使用wd,而搜狗使用query