zoukankan      html  css  js  c++  java
  • python:爬虫

    模块:

    (1)url管理器:对url进行管理

    (2)网页下载器(urllib2):将需要爬取的url指定的网页以字符串的形式下载下来

    (3)网页解释器(BeautifulSoup):解析

    利用urllib2下载网页的方法:

    方法1:

    import urllib2,cookielib
    url = 'http://www.baidu.com'  #定义url
    
    res1 = urllib2.urlopen(url)   #请求url
    print res1.getcode()     #获取动态码
    print len(res1.read())    #获取内容

    方法2:

    #伪装成浏览器
    import urllib2,cookielib
    url = 'http://www.baidu.com'
    
    request = urllib2.Request(url)
    request.add_header('User-Agent','Mozilla/5.0')   #添加http的header,伪装成浏览器
    res2 = urllib2.urlopen(request)   #发送请求获取结果
    print res2.getcode()
    print len(res2.read())

    方法3:

    #添加特殊情景的处理器。例如需要登录cookie、代理proxy、https、网页自动跳转或者互相志向等网页

    #处理cookie实例
    import urllib2 import cookielib url = 'http://www.baidu.com' cj = cookielib.CookieJar() #创建cookie容器 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #创建一个opener urllib2.install_opener(opener) #给urllib2安装opener res3 = urllib2.urlopen(url) #发送请求获取结果 print res3.getcode() print len(res3.read()) print cj

    网页解释器种类:

    (1)正则表达式

    (2)html.parser

    (3)BeautifulSoup:第三方包

    (4)lxml

    BeautifulSoup语法:

    (1)创建bs对象
    (2)搜索节点find_all,find(搜索第一个节点)
      搜索内容包括:节点名字,节点属性,节点内容
      例如:<a href='123.html' class='article_link'>hello,python!</a>
        节点名字:a
        节点属性:href='123.html' 或 class='article_link'
          节点内容:hello,python!
    (3)访问节点

    from bs4 import BeautifulSoup
    
    html_doc = '''
    <!DOCTYPE html>
    
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html;charset=utf-8">
            <title>页面1</title>
        </head>
    
        <body>
            <a href='http://www.baidu.com'>百度</a>
            <a href='http://www.youku.com'>优酷</a>
            <a href='http://www.hao123.com'>hao123</a>
        </body>
    </html>
    '''
    
    soup = BeautifulSoup(html_doc,'html.parser',from_encoding='utf-8')
    
    print '获取所有链接:'
    links = soup.find_all('a')
    for link in links:
        print link.name,link['href'],link.get_text()
    
    
    print '只获取百度的链接:'
    link_node = soup.find('a',href='http://www.baidu.com')
    print link_node.name,link_node['href'],link_node.get_text()

    输出结果:

    获取所有链接:
    a http://www.baidu.com 百度
    a http://www.youku.com 优酷
    a http://www.hao123.com hao123
    获取百度的链接:
    a http://www.baidu.com 百度
    正则表达式匹配
    a http://www.baidu.com 百度
  • 相关阅读:
    oracle12c中新能优化新特性之热度图和自动数据优化
    Oracle10g以上sysaux表空间的维护和清理
    mysql 及 posgresql之优劣势大比拼
    Oracle外部表的管理和应用
    Oracle ASM 相关的 视图(V$) 和 数据字典(X$)
    Oracle12c功能增强新特性之维护&amp;升级&amp;恢复&amp;数据泵等
    Oracle12c功能增强 新特性之管理功能的增强
    Oracle12c 中RAC功能增强新特性之ASM&amp;Grid
    oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
    SRM-697-DIV2
  • 原文地址:https://www.cnblogs.com/ping-y/p/6030647.html
Copyright © 2011-2022 走看看