python学习1

今天开始了新的学习,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

 
 
posted @ 2021-06-25 00:41  见怪见外  阅读(37)  评论(0编辑  收藏  举报