zoukankan      html  css  js  c++  java
  • day46-python爬虫学习

    一、定义

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

    二、原理

    爬虫是 模拟用户在浏览器或者App应用上的操作,把操作的过程、实现自动化的程序

    当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入https://www.baidu.com

    简单来说这段过程发生了以下四个步骤:

    查找域名对应的IP地址。

    浏览器首先访问的是DNS(Domain Name System,域名系统),dns的主要工作就是把域名转换成相应的IP地址

    向IP对应的服务器发送请求。

    服务器响应请求,发回网页内容。

    浏览器显示网页内容。

    浏览器工作原理网络爬虫要做的,简单来说,就是实现浏览器的功能。通过指定url,直接返回给用户所需要的数据, 而不需要一步步人工去操纵浏览器获取。

    三、使用模块

    1.Requests库基础知识

     

    Requests库的get()方法





     

     

    Requests库的Response对象:

    Response对象包含服务器返回的所有信息,也包含请求的Request信息。



    运行截图如下所示:



     

    2、Requests库实例

    (1)京东商品的爬取--普通爬取框架

     

    import requests  
    url = "https://item.jd.com/2967929.html"  
    try:  
        r = requests.get(url)  
        r.raise_for_status()  
        r.encoding = r.apparent_encoding  
        print(r.text[:1000])  
    except:  
        print("爬取失败!")  

     

    (2)亚马逊商品的爬取--通过修改headers字段,模拟浏览器向网站发起请求

     

    import requests  
    url="https://www.amazon.cn/gp/product/B01M8L5Z3Y"  
    try:  
        kv = {'user-agent':'Mozilla/5.0'}  
        r=requests.get(url,headers=kv)  
        r.raise_for_status()  
        r.encoding=r.apparent_encoding  
        print(r.status_code)  
        print(r.text[:1000])  
     except:
        print("爬取失败")  


    (3)百度/360搜索关键词提交--修改params参数提交关键词

    百度的关键词接口:http://www.baidu.com/s?wd=keyword

    360的关键词接口:http://www.so.com/s?q=keyword

     

    import requests  
    url="http://www.baidu.com/s"  
    try:  
        kv={'wd':'Python'}  
        r=requests.get(url,params=kv)  
        print(r.request.url)  
        r.raise_for_status()  
        print(len(r.text))  
        print(r.text[500:5000])  
    except:  
    
        print("爬取失败")  




    (4)网络图片的爬取和存储--结合os库和文件操作的使用

     

    import requests  
    import os  
    url="http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/6da229b421faf86ca9ba406190b6f06e.jpg"  
    root="D://pics//"  
    path=root + url.split('/')[-1]  
    try:  
        if not os.path.exists(root):  
            os.mkdir(root)  
        if not os.path.exists(path):  
             r = requests.get(url)  
            with open(path, 'wb') as f:  
                f.write(r.content)  
                 f.close()  
                 print("文件保存成功")  
         else:  
            print("文件已存在")  
     except:  
    
         print("爬取失败")  
  • 相关阅读:
    2013=730 胆子要大,敢想敢做
    2013=7=30 自增量的浅谈
    2013=7=29 nyist 13题
    2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
    2013=7=22
    2013=7=23 超级阶梯
    机器人写诗项目——递归神经网络(RNN)
    和程序员在一起是怎样的体验
    和程序员在一起是怎样的体验
    人工智能数学基础——线性代数
  • 原文地址:https://www.cnblogs.com/wxp997/p/8306478.html
Copyright © 2011-2022 走看看