<爬虫>相关的知识
1.概念、工具和HTTP
- 什么是爬虫
- 模拟客户端发送网络请求,获取响应,按照规则提取数据
- 爬虫的数据去哪了
- 展示到网页上(百度新闻,今日头条)
- 进行分析,从数据中寻找规律(指数网站:百度指数)
- 需要的软件和环境
- python3
- pycharm编辑器
- chrome浏览器-分析网络请求
- 浏览器的请求
- url:检查→network
- 浏览器请求url地址
- 爬虫请求url地址
- HTTP和HTTPS
- 超文本传输协议:客户端和服务端约定
- HTTPS:HTTP+SSL(安全套接字层)--更安全一点
- HTTP协议之请求
- 请求行
- 请求头
- USER-AGENT:服务器据此判断访问的是什么浏览器,
- Cookie:用来存储用户信息,每次请求会携带上发送给对方
- 请求体
- get:没有请求体,把数据放在url中
- post:登录注册,可以携带比get多很多的信息
2.requests模块的学习
- 安装
- pip install requests
- 发送get,post请求,获取响应
- response = requests.get(url)
- response = requests.post(url,data={请求体的字典})
- ②response.text:如果出现乱码,在前面加一行response.encoding = "utf-8"
- ①response.content.decode("utf-8") -----解码或者改成gbk解码
- 发送带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)---需要加异常捕获
- retrying模块学习----重试
- pip install retrying----安装
- from retrying import retry
- @retry(stop_max_attempt_number=3)-------装饰器,执行几次
- cookie相关的请求
- cookie放在headers里面
- cookie存成字典,用requests.get(url,cookies=cookie_dict)
- session = requests.session()
- session.post(url,data,headers)
- session.get(url,headers)
先发送post请求,获取cookie,带上cookie请求页面(会话维持 )
3.数据的提取方法
- json--数据交换格式
- import json
- json.loads(json字符串):json转str
- json.dumps(python字典):str转json字符串(文件写入)
- json.dumps(ret,ensure_ascII=False):数据直接显示中文,不再以ASCII码方式显示
- 主要逻辑
- start_url
- 发送请求,获得响应
- 提取数据
- 保存
- 构造下一页url地址,循环2-5步
- Xpath:提取数据
- /html/a:选择标签
- //:任意节点开始
- //div[@class="xxx"]:选择某个值
- a/@class:选择class的值
- a/text():获取a下的文本
- a//text():获取a下的所有文本
- lxml
- pip install lxml
- from lxml import etree
- element = etree.HTML("html字符串")
- element.xpath("")
<爬虫>相关的知识的更多相关文章
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中web相关的知识(概述)
Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc: spring framework中拥有自 ...
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- 【Python爬虫】入门知识
爬虫基本知识 这阵子需要用爬虫做点事情,于是系统的学习了一下python爬虫,觉得还挺有意思的,比我想象中的能干更多的事情,这里记录下学习的经历. 网上有关爬虫的资料特别多,写的都挺复杂的,我这里不打 ...
- iOS网络相关零散知识总结
iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径 ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- Linux实战教学笔记19:Linux相关网络知识梳理
第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...
- Mac os 下 python爬虫相关的库和软件的安装
由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装: 1. h ...
随机推荐
- PAT_A1033#To Fill or Not to Fill
Source: PAT A1033 To Fill or Not to Fill (25 分) Description: With highways available, driving a car ...
- java多线程学习笔记(四)
上一节讲到Synchronized关键字,synchronized上锁的区域:对象锁=方法锁/类锁 本节补充介绍一下synchronized锁重入: 关键字synchronized拥有锁重入的功能,也 ...
- java 并发——CountDownLatch
java 并发--CountDownLatch 简介 public class CountDownLatch { private final Sync sync; private static fin ...
- C/C++程序员 面试经历总结
最近在找工作,遇到了一些面试题,很惭愧的是很多都没答上来. 现在把一些问题总结一下,算是记录一下面试的经历吧.以后有空简单地回答一下, 同时也欢迎各位同仁解答,共同学习一下吧! 一.嵌入式C语言面 ...
- Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?
“猴子补丁”就是指,在函数或对象已经定义之后,再去改变它们的行为. 举个例子: import datetime datetime.datetime.now = lambda: datetime.dat ...
- TOPO DN 解析
介绍 有一个算法,是将大量TOPO DN实例解析成结构形式.并依据DN获取对应的数据.本人感觉值得分享.并供大家讨论与优化. 注意:TOPO DN实例的顺序,是被我的其他算法预处理过的 ...
- js中三元运算符的两种情况
一.一般情况 <script type="text/javascript"> var b=5; (b == 5) ? a="true" : a=&q ...
- Java中super关键字的位置
1.子类的构造函数如果要引用super的话,必须把super放在函数的首行. 例如: class Base { Base() { System.out.println("Base&qu ...
- jeesite框架常用插件
1.分页: <div class="pagination">${page }</div> 2.日历:onclick="WdatePicker({d ...
- ansible-继续普通用户权限运行
ansible 远程以普通用户执行命令 1. ansible 10.0.0.1 -m raw -a "date" -u www 2.在ansible的主机配置文件中指定ssh_ ...