爬虫小结

实现爬虫的套路
  • 首先准备url,明确爬取的目标

    • 准备start_url
    • url地址规律不明显,总数不确定的话,用正则或者xpath提取
    • 通过代码提取下一页url
    • xpath
    • 寻找url地址,部分参数会在当前响应中,如当前页码数或者页码总数
    • 准备url_list
    • 页码数明确
    • url规律明显
  • 发送请求,获取响应

    • 添加随机User-Agent,反反爬虫

    • 添加随机的代理ip地址,反反爬虫

    • 如果被对方判定为爬虫,则应该添加更多的请求头,如referrer,cookies

    • cookie的处理可以用session来解决

    • requests库提供了session对象

      
      # 生成session对象
      
      session=requests.session()
      
      # 使用session发送post请求,cookie保存在其中
      
      session.post(post_url,data=post_data,headers=headers)
      
      # 在使用session进行请求登录之后才能访问的网址
      
      r = session.get(url,headers=headers)
      
      # 进行之后的保存操作或者其他的操作
      
    • 可以准备一堆cookie,组成cookie池

    • 如果不登录

    • 准备刚开能够成功请求对方网站的cookie,即接收对方网站设置在response的cookie

    • 下一次请求的时候,使用之前列表中的cookie来请求

    • 如果登录

    • 准备多个账号

    • 使用程序获取每个账号的cookie
    • 之后请求登录之后才能访问的网站随机的选择cookie
  • 提取数据

    • 首先确定数据的位置,如在response的网页中,还是js中
    • 如果数据在当前的url地址中
    • 提取列表页数据
    • 直接请求列表页的url地址,不进入详情页
    • 提取详情页的数据
      • 确定url
      • 发送请求
      • 提取数据
      • 返回
    • 如果数据不在当前的url中
    • 如果在其他响应中,寻找数据的位置
    • 从network中依次寻找
    • 使用Chrome的过滤条件
    • 使用Chrome的search all file,搜索数字或者英文
    • 数据提取
    • xpath,从HTML中整块的数据,先分组,再依据分组提取
    • re,提取price,max_time,或者其他在js中或者html中的json字符串
    • json数据
  • 保存

    • 保存在本地 text json csv
    • 保存在数据库
正则和xpath相关
正则

​ 正则如何进行非贪婪匹配,在div标签中的数据如何提取?
*? 或者 +?

re.findall("<div class="a">.*?<div id="">(.*?)</div>",str) 返回列表,没有匹配到就是空列表

xpath
  • xpath如何获取文本,如何获取任意标签下的文本

    • a/text() 只能获取a下的文本
    • a//text()能够获取a下和a包含的标签文本
    • `a[text()=’下一页’]
  • xpath如何获取属性,如何对标签进行定位

    • a/@href
    • div[@class='b']
  • xpath中//有什么用

    • //在最前面的时候,表示在html中任意位置开始选择
    • div\\*放在节点后面的时候,能够选择当前节点下所有的标签
  • xpath中获取某一个或者某几个

    • //a[1] 第一个
    • //a[last()] 最后一个
    • //a[position()<=3]
    • //a[1]|//a[3]
  • lxml如何使用,如何把lxml处理后的内容转为字符串

    from lxml import etree
    element = etree.HTML(bytes,str) # 把字符串转为element对象
    etree.tostring(element) # 把element对象转为字符串
    element.xpath("xpath语句") # 用xpath匹配数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值