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("")            

<爬虫>相关的知识的更多相关文章

  1. .NET同步与异步之相关背景知识(六)

    在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...

  2. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中web相关的知识(概述)

    Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc:  spring framework中拥有自 ...

  3. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  4. 【Python爬虫】入门知识

    爬虫基本知识 这阵子需要用爬虫做点事情,于是系统的学习了一下python爬虫,觉得还挺有意思的,比我想象中的能干更多的事情,这里记录下学习的经历. 网上有关爬虫的资料特别多,写的都挺复杂的,我这里不打 ...

  5. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

  6. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  7. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  8. Linux实战教学笔记19:Linux相关网络知识梳理

    第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...

  9. Mac os 下 python爬虫相关的库和软件的安装

      由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装:   1. h ...

随机推荐

  1. PAT_A1100#Mars Numbers

    Source: PAT A1100 Mars Numbers (20 分) Description: People on Mars count their numbers with base 13: ...

  2. raid 5

    1. 添加硬盘设备 1.首先添加一块硬盘 2.选择磁盘类型 点击下一步   创建新的磁盘 更改磁盘大小 磁盘名称 完成以后硬盘出现在列表中 按上述步骤进行五次,新建五个硬盘如图 然后开启虚拟机 打开终 ...

  3. Django Model里的__str__以及Meta

    举个栗子,注释已经比较详细了 name = models.CharField(max_length=30,verbose_name='标签名称') #max_length=30里的30在mysql以前 ...

  4. 2019秋季学期第2周Java学习总结

    本周在第一周接触认识Java后对该编程语言有了进一步了解,明白了Java的类型:包括Application程序,Applet程序.知道了一个Java程序的关键字(public class).主方法(p ...

  5. 构建局域网YUM仓库

    修改yum源为阿里云源 检验阿里云源是否正常 yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached ...

  6. 将rdlc报表作为资源嵌套使用

    原文:将rdlc报表作为资源嵌套使用 如果我们准备在Windows Forms里面使用rdlc报表,那么会遇到一个问题:rdlc报表到底要不要作为附属文件的方式随程序发布? 这样做的优点是:报表可以后 ...

  7. 消费kafka的消息,并将其SparkStreaming结果保存到mysql

    将数据保存到mysql,需要用到jdbc.为了提高保存速度,我写了一个连接池 1.保存到mysql的代码 package test05 import org.apache.log4j.{Level, ...

  8. Docker部署web环境之Lanmt

    2. 案例二 整套项目多容器分离通过docker-compose部署lanmt环境 详细的安装准备环境,省略,配置以及部署参考案例一即可 即可实现批量创建web,也可以实现多web共用一个php或my ...

  9. IT书单-持续更新

    重构:改善既有代码的设计代码整洁之道深入理解Java虚拟机Java并发编程的艺术<修改代码的艺术><程序员的职业素养>代码大全程序员修炼之道深入理解java虚拟机Java并发编 ...

  10. Centos6安装破解Confluence6.3.1

    confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享 安装和破解包百度网盘地址: 链接:https://pan.baidu.co ...