Python爬虫

Python爬虫


本文由 Luzhuo 编写,转发请保留该信息.
原文: https://blog.csdn.net/rozol/article/details/80010235

数据获取途径

  • 企业积累
  • 政府/机构公开数据
  • 数据管理咨询公司
  • 数据交易平台 (有价值的数据可出售, 获取难度越高, 价值越高)
  • 网络爬取 (深浅网络)

爬虫技术

  • 抓取HTML页面
    • urllib, requests
  • 解析响应结果
    • re, xpath, BeautifulSoup4, jsonpath, pyquery
  • ajx动态加载, 验证码的处理
    • Selenium + PhantomJs
    • Tesseract(图像识别)
  • 高性能框架
    • Scrapy(twisted网络框架), Pyspider
  • 分布式框架
    • scrapy-redis
  • 反爬虫
    • User-Agent, 代理, 验证码, 动态加载, 数据加密

通信内容

HTTPS

  • 在http的基础上加了一层ssl层
  • http端口: 80
  • https端口: 443

请求头

  • GET / HTTP/1.1
    • 请求方法: GET / POST / PUT / DELETE / …
  • Host: www.baidu.com
    • 主机+端口号
  • Connection: keep-alive[重要]
    • 连接类型: 客户端发起Connection: keep-alive
      • 服务端支持, 则回复Connection: keep-alive响应, 不关闭连接
      • 服务端不支持, 则回复Connection: close响应, 关闭连接
    • 利用keep-alive可重用连接, 不必每次请求都建立连接, 减轻服务端压力
  • Upgrade-Insecure-Requests: 1
    • 升级为https请求, 在加载资源时, 会自动将http请求替换成https请求
  • User-Agent: Mozilla/5.0 ...[重要]
    • 浏览器名称, 平时尽量多去收集一些
  • Accept: text/html, ...
    • 传输的数据类型: /(所有) / image/jpeg(jpeg图片) / image/gif(gif图片) / text/html(html文本) / application/xxx(数据或文件) / …
  • Referer: https://blog.csdn.net/rozol[重要]
    • 页面跳转, 表示请求的网页来自于哪个url
  • Accept-Encoding: gzip, deflate, br[重要]
    • 编码格式, 一般是压缩类型, 一般不写
  • Accept-Language: zh-CN,zh;q=0.9
    • 语言: en / en-us / zh / zh-cn
  • Cookie: PSTM=1496126358; ...
    • Cookie
  • Content-Type: application/x-www-form-urlencoded
    • POST请求发送的数据类型

响应头

  • Server: Tengine
    • 服务器类型
  • Connection: keep-alive
    • 连接类型
  • Keep-Alive: timeout=20
    • 保持TCP通道的时长
  • Cache-Control:must-revalidate, no-cache, private
    • 告诉客户端不要缓存资源
    • 客户端发送Cache-Control: max-age=0请求, 表示没有缓存资源
    • 服务器回应Cache-Control: no-cache
  • Pragma: no-cache
    • 同 Cache-Control
  • Content-Type: text/html;charset=UTF-8
    • 资源类型
  • Date: Sat, 14 Apr 2018 14:08:23 GMT
    • 服务器发送数据时间
  • Expires: Thu, 01 Jan 1970 00:00:00 GMT
    • 在这个时间之前, 可以直接访问缓存
  • Transfer-Encoding:chunked
    • 服务器发送资源以分块的方式发送

状态码

  • 200: 成功
  • 302: 重定向
  • 304/307: 使用缓存
  • 403: 权限不足
  • 404: 页面丢失
  • 500: 服务器异常

爬虫不可或缺的几个因素

  • Connection: keep-alive: 重用连接, 减轻服务器负担, 使用Cookie访问
  • User-Agent: 使用IE的, 返回的是标准格式的数据
  • Accept-Encoding: 注意压缩类型, 以免拿到解压不了的数据
  • 代理IP
  • response.geturl() 请求后的真实路径, 是否被重定向
  • res.getcode() 返回码
  • ajax加载: from表单提交, 返回数据(如:json, 字符串字典)
  • 在处理登录时, 会有一些去获取cookie 和 动态加密密码 之类的请求
  • xsrf值可从网页上直接获取
  • cookie: 不需要登录的网站不要发cookie
  • 设置延迟请求时间, 特别是需要cookie的网站
  • 使用cookie的网站, 尽量使用同User-Agent和ip

代理IP

爬虫工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值