python爬虫基本概念

python爬虫基本概念:

写爬虫必须弄懂的问题:

-从输入网址到看到网页,都反生了什么?

URL的概念

  • 统一资源定位符:Uniform Resource Locator
  • 组成:协议 域名
  • urllib是一个py分析url相关的工具
  • ipython是一个python命令行工具
    • 使用tab 和 ? 可以很方便使用python命令
  • requests是一个py请求工具
    • r = requests.get(‘http://www.baidu.com’)
    • r.text得到文字 r.content得到二进制数据 r.encoding得到编码
  • chardet.detect(r.content)
  • r.contetn.decode(‘utf-8’)
  • gb2312<gbk<gn18030
  • gbk保含gb2312,可以替换
  • pip 国内镜像pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
  • pip install cchardet

cchardet.detect(‘科技健康的点点滴滴’.encode(‘gbk’))

建议使用cchardet 取代 chardet ,因为前者更准确

HTTP 请求

  • 主要方法 : get post … 6种

写爬虫的一般步骤

  • 浏览器打开要抓取的网站
    • 推荐Chrome浏览器
    • F12开发者工具
  • 查看源代码,是否包含想要的数据
    • 包含,则通过request得到源码
    • 不包含,则看下一步
  • 检查ajax请求
    寻找需要的数据

爬虫的基本操作

  1. 抓取 -> 存储HTML(压缩)
    • 网页
    • ajax
  2. 提取
  3. 存储

HTTP请求库

  • urllib.request
  • request
    • r.test: str , chardet,headers->encoding
    • r.content: bytes cchardet.detect(r.content)
    • r.json
  • cchardet 编码
  • aiohttp:异步IO 做http请求,协程并发请求
  • selenium自动化测试工具
    • webdirver.Chrome()
    • chrome headless

提取数据的库

  • re 正则表达式
  • lxml(Beautiful Soup) 基于C语言
    • xpath()

爬虫进阶

  • 用Chrome断点调试JavaScript
  • 用Charles , Fiddle 抓包分析

如何发现ajax加载的URL

  • F12 network
  • 返回结果 HTML xml json

瀑布流网页的抓取

  • 表现是瀑布流 底层是ajax
    • 网页滚动到底部触发ajax异步请求新数据

js解密

  • 打开网页加载的js
    • 压缩 混淆 打包
    • 晦涩难懂 pretty格式 变量 函数名 难懂
  • 找到js加密/解密算法的代码
    • Charles抓包分析
      • 例子:https://www.yuanrenxue.com/crawler/get-login-cookies-charles-weibo.html
    • Chrome调试JavaScript
      • 例子:translate.google.cn

对付JavaScript的万能钥匙

  • Python Selenium 模块
    • Chrome有界面
    • Chrome Headless
  • Chrome的运行效率慢
    • 没有request等库快 但开发速度快
      • 不用费劲理解JavaScript代码
      • 不用使用python重写JavaScript
    • 针对单一复杂网站,建议Chrome
      • 很难绕开该网站ip ,账号限流
    • 对于多个普通网站,使用requests
      • 这些网站几乎没有限制

异步并发爬虫

异步并发爬虫架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值