爬虫学习笔记day01


1. 网络爬虫
    1. 定义:网络蜘蛛,网络机器人,抓取网络数据的程序
    2. 总结:用Python程序去模仿人去方位网站,模仿的越像人越好
    3. 爬去数据的目的:通过有效的大量的数据来分析市场走势,公司决策
2. 企业获取数据的方式
    1. 公司自有数据
    2. 第三方数据平台购买
        数据堂,贵阳大数据交易所
    3. 爬虫来爬取数据
        市场上没有或者价格太高,利用爬虫程序取爬取
3. Python做爬虫优势
    请求模块、解析模块丰富成熟,强大的框架Scrapy(异步多线程分布式)框架
    PHP : 对多线程、异步支持不太好
    JAVA : 代码笨重,代码量很大
    C/C++ : 虽然效率高,但是代码成型很慢
4. 爬虫分类
    1. 通用网络爬虫(搜索引擎引用,需要遵守robots协议)
        http://www.taobao.com/robots.txt
        1. 搜索引擎如何获取一个新网站的URL
            1. 网站主动向搜索引擎提供(百度站长平台)
            2. 和DNS服务商(万网)合作,快速收录新网站
    2. 聚焦网络爬虫
        自己写的网络爬虫程序 : 面向需求的爬虫

    爬虫-> 反爬虫 -> 反 反爬虫
5. 爬去数据的步骤
    1. 确定要爬取的URL地址
    2. 获取HTTP/HTTPS协议获取响应的HTML页面
    3. 提取HTML页面中有用的数据
        1. 所需数据,保存
        2. 页面中由其他的URL,继续第2步
6. Anaconda 和 Spyder
    1. 注释/取消注释 “ ctrl + 1(数字1)
    2. 保存 ctrl + s
    3. 运行:F5
    4. 自动补全: Tab
7. chrome浏览器插件
    1. 安装步骤
        1. 浏览器右上角 -> 更多更具 -> 扩展程序
        2. 点开右上角 ->开发者模式
        3. 拖拽 插件 到浏览器页面,释放鼠标 ->添加扩展程序
    2. 插件介绍
        1. Xpath Helper : 网页数据解析插件
        2. JSON View : 查看json格式的数据(好看)
        3. Proxy SwitchOmega : 代理切换插件
8. WEB
    1. HTTP和 HTTPS
        1. HTTP:80(端口)
        2. HTTP:443,HTTP的升级版,加了一个安全套接层
    2. GET 和 POST
        1. GET :查询参数都会在URL地址显示出来
        2. POST : 查询参数和需要提交数据是隐藏在form表单例的,不会在URL上显示
    3. URL:统一资源定位符
        https://item.jd.com  :80 /11936238.html   #detail
        协议     域名/ip地址  端口 访问资源的路径   锚点    
    4. User-Agent
        记录用户的浏览器、操作系统等,为了让用户获取更好的HTML页面效果
        User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16

        Mozilla Firefox: (Gecko内核)
        IE : Trident(自己的内核)
        Linux : KHTML(like Gecko)
        Apple: Webkit(like KHTML)
        Google : Chrome(like Webkit)
        其他浏览器都是模仿IE/Chrome
9. 爬虫请求模块
    1. 版本
        1. python2: urllib2 urllib
        2. python3: urllib.request
    2. 常用方法(urllib.request)
        1. urllib.request.urlopen('URL')
            1. 作用: 向网站发起请求,并获取响应
                字节流 = response.read()
                字符串 = response.read().decode('utf-8')
                # encode() 字符串 --> bytes
                # decode() bytes --> 字符串
            2. 重构 User-Agent
                1. 不支持重构 : urlopen()
                2. 支持重构 User-Agent
                    urllib.request.Request(添加User-Agent)
        2. urllib.request.Request()
            User-Agent是爬虫与反爬虫斗争的第一步,发送请求必须带User-Agent(字典形式)
            1. 使用流程
                1. 创建请求对象:利用Request()方法
                2. 获取响应对象:利用urlopen(请求对象)
                3. 获取响应内容: html=res.read().decode('utf-8')
            2. 响应对象res的方法
                1. read() : 读取响应内容(字节流)
                2. getcode() : 返回HTTP响应状态码
                    print(res.getcode())
                        200:成功
                        4xx:服务器页面错误
                        5xx:服务器出错
                    
                3. geturl() : 返回实际数据的url(防止重定向问题)
    3. urllib.parse模块
        1. urllib.parse.urlencode({字典})
            编码前 :{'wd':'帅哥'}
            编码后 :'wd=%e8%a5'
            注意:
                1. urlencode的参数一定要为字典,得到的结果为字符串
                2. with open('BaiDu.html','w',encoding='utf-8') as f:
                        f.wirte(html)
        2. urllib.parse.quote('字符串')
            1. http://www.baidu.com/s?wd=帅哥
            2. key = urllib.parse.quote('帅哥')
                key的值 :'%e8%a3%b4...'
        3. urllib.parse.unquote('字符串')
            s = '%d3%e8...'
            s = urllib.parse.unquote(s)
        
        爬取百度贴吧信息
            步骤:
                1. 找url规律
                2. 获取网页内容(发请求,或响应)
                3. 保存(本地,数据库)
10.请求方式及案例
    1.GET
        1. 特点: 查询参数在url地址上显示
        2. 抓取百度贴吧
    2.POST(在Request方法中添加data参数)
        1.  req = urllib.request.Request(url,headers=headers,data=data)
            data : 表单数据以bytes类型提交,不是字符串
        2. 案例: 有道翻译
            1.要求
                用户输入需要翻译的内容,把翻译的结果给输出来
        3. 如何把json格式的字符串转换为Python中字典
            import json
            s = {'key':'value'}
            s_dict = json.loads(s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值