A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谷粒姐姐 黑马粉丝团   /  2018-11-23 16:31  /  1111 人查看  /  0 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

正则使用的注意点
  • re.findall("a(.*?)b","str"),能够返回括号中的内容,括号前后的内容起到定位和过滤的效果
  • 原始字符串r,待匹配字符串中有反斜杠的时候,使用r能够忽视反斜杠带来的转义的效果
  • 点号默认情况匹配不到\n
  • \s能够匹配空白字符,不仅仅包含空格,还有\t|\r\n

xpath学习重点
  • 使用xpath helper或者是chrome中的copy xpath都是从element中提取的数据,但是爬虫获取的是url对应的响应,往往和elements不一样
  • 获取文本

    • a/text() 获取a下的文本
    • a//text() 获取a下的所有标签的文本
    • //a[text()='下一页'] 选择文本为下一页三个字的a标签

  • @符号

    • a/@href
    • //ul[@id="detail-list"]

  • //

    • 在xpath最前面表示从当前html中任意位置开始选择
    • li//a 表示的是li下任何一个标签

lxml使用注意点
  • lxml能够修正HTML代码,但是可能会改错了

    • 使用etree.tostring观察修改之后的html的样子,根据修改之后的html字符串写xpath

  • lxml 能够接受bytes和str的字符串
  • 提取页面数据的思路

    • 先分组,渠道一个包含分组标签的列表
    • 遍历,取其中每一组进行数据的提取,不会造成数据的对应错乱
    • xpath的包含
      • //div[contains(@class,'i')]

      实现爬虫的套路
      • 准备url

        • 准备start_url

          • url地址规律不明显,总数不确定
          • 通过代码提取下一页的url

            • xpath
            • 寻找url地址,部分参数在当前的响应中(比如,当前页码数和总的页码数在当前的响应中)

        • 准备url_list

          • 页码总数明确
          • url地址规律明显

      • 发送请求,获取响应

        • 添加随机的User-Agent,反反爬虫
        • 添加随机的代理ip,反反爬虫
        • 在对方判断出我们是爬虫之后,应该添加更多的headers字段,包括cookie
        • cookie的处理可以使用session来解决
        • 准备一堆能用的cookie,组成cookie池

          • 如果不登录

            • 准备刚开始能够成功请求对方网站的cookie,即接收对方网站设置在response的cookie
            • 下一次请求的时候,使用之前的列表中的cookie来请求

          • 如果登录

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

      • 提取数据

        • 确定数据的位置

          • 如果数据在当前的url地址中

            • 提取的是列表页的数据

              • 直接请求列表页的url地址,不用进入详情页

            • 提取的是详情页的数据


                • 确定url


                • 发送请求


                • 提取数据


                • 返回


          • 如果数据不在当前的url地址中

            • 在其他的响应中,寻找数据的位置


                • 从network中从上往下找


                • 使用chrome中的过滤条件,选择出了js,css,img之外的按钮


                • 使用chrome的search all file,搜索数字和英文

        • 数据的提取

          • xpath,从html中提取整块的数据,先分组,之后每一组再提取
          • re,提取max_time,price,html中的json字符串
          • json

      • 保存

        • 保存在本地,text,json,csv
        • 保存在数据库


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马