python爬虫 --- 扩展知识

本文介绍了Python爬虫的通用套路,包括通用爬虫的URL处理、XPath的使用,以及爬虫代码优化建议。详细讲解了如何处理SSL证书验证、代理IP、用户认证和随机休眠,提供了解决网站反爬策略的技巧。此外,还提到了多线程爬虫和Queue队列模型在爬虫程序结构中的应用,以及BS4解析库的使用。
摘要由CSDN通过智能技术生成

通用爬虫的套路

  • 准备 url
    • 准备 start_url
      • url 地址规律不明显,总数不确定
      • 通过代码提取下一页URL
        • xpath
        • 寻找 url 地址,部分参数在当前响应中(比如,当前页码数和总的页码数在当前的响应中)
    • 准备 url_list
      • 页码总数明确
      • URL地址规律明显
  • 发送请求,获取响应
    • 添加随机的 User-Agent,反反爬虫
    • 添加随机的代理IP,反反爬虫
    • 在对方判断出我们是爬虫之后,应该添加更多的 header字段,包括cookie
    • cookie的处理可以使用session来解决
    • 准备一堆能用的cookie,组成cookie池
      • 如果不登录
        • 准备刚开始能够成功请求对方网站的cookie,即接收对方网站设置在response的cookie
        • 下次请求的时候,使用之前的列表中的cookie来请求
      • 如果登录
        • 准备多个账号
        • 使用程序获取每个账号的cookie
        • 之后请求登录之后才能访问的网站随机的选择cookie
  • 提取数据
    • 确定数据的位置
      • 如果数据在当前页面的url地址中
        • 提取的是列表页的数据
          • 直接请求列表页的URL地址,不用进入详情页
        • 提取详情页的数据
            1. 确定url
            1. 发送请求
            1. 提取数据
            1. 返回
      • 如果数据不在当前URL地址中
        • 在其他响应中,寻找数据的位置
            1. 从 network 中从上往下寻找
            1. 使用chrome中过滤条件,选择除了 js ,css , img 之外的按钮
            1. 使用chrome的search all file,搜索数字和英文
    • 数据提取
      • xpath,从html中提取整块的数据,先分组,之后每一组再提取
      • re,提取max_time,price,html中的json字符串
      • json
  • 保存
    • 保存在本地,text、 json、csv
    • 保存在数据库
      在这里插入图片描述

xpath的包含

  • //div[contains(@class,"i")]

爬虫代码建议

  • 尽量减少请求次数
      1. 能抓列表就不用抓详情页
      1. 保存获取到的html页面,供查错和重复请求使用
  • 关闭网站的所有类型的页面
      1. wap页面,触屏版页面
      1. H5页面
      1. APP
  • 多伪装
      1. 动态的UA
      1. 代理IP
      1. 不使用cookie
  • 利用多线程分布式
    在不被ban的请求下尽可能提高速度

技巧

自定义UA(User-Agent)代理池
  • 自己构建
# ua_info.py
ua_list = [
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
    'User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
    'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
    'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
    'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safa
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值