<爬虫>相关的知识

1.概念、工具和HTTP

  1. 什么是爬虫
    • 模拟客户端发送网络请求,获取响应,按照规则提取数据
  2. 爬虫的数据去哪了
    • 展示到网页上(百度新闻,今日头条)
    • 进行分析,从数据中寻找规律(指数网站:百度指数)
  3. 需要的软件和环境
    • python3
    • pycharm编辑器
    • chrome浏览器-分析网络请求
  4. 浏览器的请求
    • url:检查→network
    • 浏览器请求url地址 
    • 爬虫请求url地址   
  5. HTTP和HTTPS
    • 超文本传输协议:客户端和服务端约定
    • HTTPS:HTTP+SSL(安全套接字层)--更安全一点
    • HTTP协议之请求
      • 请求行
      • 请求头
        • USER-AGENT:服务器据此判断访问的是什么浏览器,
        • Cookie:用来存储用户信息,每次请求会携带上发送给对方
      • 请求体  
    • get:没有请求体,把数据放在url中
    • post:登录注册,可以携带比get多很多的信息                      

 2.requests模块的学习

  1. 安装
    • pip install requests
  2. 发送get,post请求,获取响应
    • response = requests.get(url) 
    • response = requests.post(url,data={请求体的字典}) 
    • ②response.text:如果出现乱码,在前面加一行response.encoding = "utf-8"
    • ①response.content.decode("utf-8") -----解码或者改成gbk解码   
  3. 发送带header的请求
    •  headers = {"User-Agent":"xxx","Referer":"xxx",}
    • response = requests.post(url,data={请求体的字典},headers= headers) 
    • response = requests.get(url,headers= headers)
    • response.request.url
    • response.request.headers
    • response = requests.post(url,data={请求体的字典},headers= headers,timeout=3)---需要加异常捕获 
  4. retrying模块学习----重试
    • pip install retrying----安装
    • from retrying import retry
    • @retry(stop_max_attempt_number=3)-------装饰器,执行几次   
  5. cookie相关的请求 
    • cookie放在headers里面
    • cookie存成字典,用requests.get(url,cookies=cookie_dict)
    • 先发送post请求,获取cookie,带上cookie请求页面(会话维持 )
      • session = requests.session()
      • session.post(url,data,headers)
      • session.get(url,headers)         

3.数据的提取方法

  1. json--数据交换格式
      import   json
    • json.loads(json字符串):json转str
    • json.dumps(python字典):str转json字符串(文件写入)
    • json.dumps(ret,ensure_ascII=False):数据直接显示中文,不再以ASCII码方式显示
  2. 主要逻辑
    1. start_url
    2. 发送请求,获得响应
    3. 提取数据
    4. 保存
    5. 构造下一页url地址,循环2-5步
  3. Xpath:提取数据
    • /html/a:选择标签
    • //:任意节点开始
    • //div[@class="xxx"]:选择某个值
    • a/@class:选择class的值
    • a/text():获取a下的文本
    • a//text():获取a下的所有文本
  4. lxml
    • pip install lxml
    • from lxml import etree
    • element = etree.HTML("html字符串")
    • element.xpath("")            

猜你喜欢

转载自www.cnblogs.com/shuimohei/p/11938539.html
今日推荐