zoukankan      html  css  js  c++  java
  • Python爬虫〇二———从几个简单的爬虫开始

    下面,我们从几个简单的爬虫开始我们的爬虫之旅

    通用爬虫

    我们先来做一个通用的爬虫,作用是爬取一个搜索引擎的搜索结论。比方说用搜狗搜一下python这个关键字,注意看一下url:

     可以看出来这是个GET请求,参数可以直接看出来,也可以通过浏览器的抓包工具看一下

     

     上面的图里大概演示了从哪里找到抓包工具,选中的就是我们请求的内容。可以看看右边那个对话框中的Headers选项卡里的内容,讲了请求头和响应头

    请求头

     响应头

     请求头中选中的那一行User-Agent是几乎所有爬虫都要设置的一个内容,——UA伪装。

    UA伪装和UA策略

    服务器在拿到请求的时候,可以通过请求头里的参数User-Agent获取到请求载体的身份标识,如果是浏览器的话就允许访问数据,否则就屏蔽掉。这应该就是最原始的反爬策略了。所以我们就给爬虫加了个UA伪装,让他假装是一个浏览器

     1 #!/usr/bin/python3
     2 import requests
     3 
     4 if __name__ == '__main__':
     5     url = 'https://www.sogou.com/web'
     6     headers = {
     7             'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
     8              }
     9     #处理url携带的参数
    10     kw = input('word:')
    11 
    12     param = {
    13         'query':kw
    14     }
    15     
    16     respon = requests.get(url,params=param,headers=headers)
    17 
    18     data = respon.text
    19     file_name ='./'+ kw+'.html'
    20     with open(file_name,'w',encoding='utf-8') as f:
    21         f.write(data)

    上面就是最简单的爬虫了。param里的key是从GET请求的参数来的

     整个过程没什么难的,因为响应头里定义了数据的类型就是text,所以我们就在18行里的data就是respon.text的方式拿到数据的。

     AJAX响应页面的爬虫

     有很多的页面是通过AJAX请求来对页面部分刷新的,而这些刷新出来的内容正是我们需要的,这个爬虫要怎么做呢?

     其实我们主要就是想拿到输入框下面的内容,注意看一下我们每输入一个字母就会队页面进行一下刷新,所以这应该是个AJAX请求

    还是要看看抓包工具里的几个重要的参数

    上面说明了AJAX请求的URL和方法

     这里可以注意一下,返回的内容是个json对象 

    看看输入do以后的请求带的参数,主要是query,其实其他的都可以暂时忽略。

    所以我们可以根据上面的内容来组织代码

     1 # !/usr/bin/python3
     2 import requests
     3 
     4 if __name__ == '__main__':
     5     url = 'https://fanyi.baidu.com/sug'
     6     headers = {
     7             'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
     8     }
     9 
    10     word = input('word')
    11 
    12     data = {'kw':word}
    13 
    14     response = requests.post(url=url,headers=headers,data=data)
    15 
    16     with open('./'+word,'w') as f:
    17         f.write(response.json)

    因为响应的内容是个json对象,所以最后一行的代码是response.json,这样就完成了数据的持久化。

    总结

     从上面两个简单的爬虫入手,我们大概了解了如何通过浏览器的行为去构建一个爬虫。后面我们去爬一个稍微复杂的数据!

  • 相关阅读:
    跟我学习编写通用的单据编码生成器
    asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析
    c#语言中的Process进程类型的使用示例
    C#语言中的XmlSerializer类的XmlSerializer.Deserialize (Stream)方法举例详解
    C#语言中的XmlSerializer类的XmlSerializer.Serialize(Stream,Object)方法举例详解
    大型三甲医院管理系统源码PACS超声科室源码DICOM影像工作站
    大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版
    大型三甲医院信息管理系统源码 His系统功能齐全 完整可用
    大型三甲医院医疗体检信息管理系统源码 PEIS 体检科软件 CS
    大型进销存管理系统源码 家电业 电器类进销存 asp.net C#框架
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/13763272.html
Copyright © 2011-2022 走看看