反爬以及解决方法、爬取网站的流程、注意事项、可迭代对象和迭代器

一、爬取网站的流程

  1. 确定网站那个url是数据的来源
  2. 简要分析一下网站结构,查看数据一般放在哪里
  3. 查看是否有分页,解决分页的问题
  4. 发送请求,查看response.text里面是否有想要的数据内容
  5. 如果有数据,就用响应的提取数据的方法提取数据保存

二、注意事项:

刚开做爬虫项目,先不要用类去做,只需要关注数据的来源等问题的解决,不要关注类结构的设计。

三、可迭代对象和迭代器

可迭代对象就是有__iter__属性的对象

迭代器:有__next__属性的对象

iter(可迭代对象)可以转换成迭代器

可迭代对象有哪些:

  • list

  • dict

  • tuple

  • str

  • bytes

  • set

  • 迭代器

  • 生成器

  • 文件流

    如何打印一个文件同时输出行号。
    fp = open(‘shabei_spider.py’,‘r’,encoding=‘utf-8’)
    print(fp)
    #如何输出行号。
    for i,c in enumerate(fp,1):
    print(i,c)

四、反爬

(一)反爬措施以及应对措施

反爬策略:

  1. 通过use_agent客户端表示来判断是否是爬虫
    解决办法:封装user_agent请求头

  2. 通过访问频率来判断
    解决办法:设置爬取间隔
    a = random.randint(5)
    time.sleep(a)

  3. 封ip
    解决办法:设置代理ip

  4. 页面内容无法直接获取数据,页面都是js代码
    selenium+phantomjs可以获取页面数据

    xpath://div[@class=“abc”]/p[@id=“p1”]
    css选择器:div.abc p #p1

(二)动态html页面的处理方法

常见的页面技术

  1. js
    html使我们页面的骨架,css是页面装饰,js是页面的灵魂
  2. jquery
    jquery是一个js库,可以使js代码更加简化
  3. ajax:web页面的异步请求,是一种技术
  4. DHTML

(三)selenium+phantomjs就可以处理这种问题

  1. selenium:是web自动测试工具
    pantomjs:是一个无界面的浏览器。可以运行js代码,拿到页面数据
  2. selenium和phantomjs的下载
    pip install selenium==2.48.0
    百度phantomjs镜像
  3. phantomjs环境变量的配置
    有第三方插件的,都可以放在anaconda/scripts文件下面
  4. chromedriver
    chromedriver镜像,注意和自己的chrome浏览器版本对应
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值