为了账号安全,请及时绑定邮箱和手机立即绑定

Python开发简单爬虫

蚂蚁帅帅 全栈工程师
难度初级
时长 1小时14分
学习人数
综合评分9.67
646人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 实例爬虫-分析目标

    查看全部
  • 开发爬虫的步骤

    确定目标:要抓取哪部分数据



    查看全部
  • 实例测试代码

    import re
    
    from bs4 import BeautifulSoup
    
    html_doc = """
    <html><head><title>The Dormouse's story</title></head>
    <body>
    <p class="title"><b>The Dormouse's story</b></p>
    
    <p class="story">Once upon a time there were three little sisters; and their names were
    <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
    <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
    <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
    and they lived at the bottom of a well.</p>
    
    <p class="story">...</p>
    """
    
    soup=BeautifulSoup(html_doc,'html.parser')
    
    print('获取所有链接:')
    links=soup.find_all('a')
    for link in links:
        print(link.name,link['href'],link.get_text())
    
    print('获取指定链接(获取Lacie链接):')
    # link_node=soup.find('a',id="link2")
    link_node=soup.find('a',href='http://example.com/lacie')
    print(link_node.name,link_node['href'],link_node.get_text())
    
    print('输入正则模糊匹配出需要的内容:')
    link_node=soup.find('a',href=re.compile(r"ill"))  #'r'表示正则中出现反斜线时,我们只需写一个反斜线,否则我们要写两个
    print(link_node.name,link_node['href'],link_node.get_text())
    
    print('输入p这个段落文字(指定class获取内容):')
    p_node=soup.find('p',class_="title")
    print(p_node.name,p_node.get_text())


    查看全部
  • 访问节点信息

    查看全部
  • name:名称

    attrs:属性

    string:文字

    bs模块非常强大的地方是:对于它的名称,属性和文字,都可传入一个正则表达式来匹配对应的内容

    'class'后加了'_'的原因:python的关键字有class,bs为了避免冲突,加了一个'_'

    查看全部
  • 对应代码

    创建了BeautifulSoup对象并加载好了DOM

    查看全部
  • 搜索 栗子

    查看全部
  • Beautiful Soup语法

    根据下载好的HTML网页字符串可创建一个BeautifulSoup对象,创建这个DOM对象的同时就会将整个文档字符串下载成一个DOM数

    根据这个DOM数我们就可进行各种节点的搜索;搜索节点时,可按照节点名称或节点属性或节点文字进行搜索

    (find_add()方法:会搜索出所有满足要求的节点;find()方法:只会搜索出第1个满足要求的节点;这两个参数是一模一样的)

    得到一个节点以后,我们就可以访问节点的名称,属性,文字


    查看全部
  • 结构化解析

    查看全部
  • 4种解析器

    正则表达式

    html.parser模块:py自带

    Beautiful Soup:第三方插件 它可使用html.parser作为它的解析器,也可使用lxml作为它的解析器,相对来说比较强大

    lxml:第三方插件 解析html网页或者xml


    查看全部
  • 网页解析器

    查看全部
  • urllib2下载网页方法3的对应代码

    导入urllib2模块,cookielib模块

    创建cookie容器来存储cookie数据

    然后使用urllib2的HTTPCookieProcessor,以生成的cookie容器作为参数,生成一个header,将header传给urllib2的build_opener()方法来生成一个opener对象

    然后给urllib2安装opener

    最后使用urllib2的urlopen()方法传入一个url生成response对象实现网页的下载

    查看全部
  • urllib2下载网页方法3

    有些网页需要用户登录才能访问,需要添加cookie处理,这里我们使用HTTPCookieProcessor

    有些网页需要代理才能访问,我们使用ProxyHandler

    有些网页是使用HTTPS加密访问的,这里我们使用HTTPSHandler

    有些网页有相互自动的跳转关系,我们使用HTTPRedirectHandler

    这些Handler我们传送给urllib2的build_opener()方法来创建一个opener对象

    然后传给urllib2的install_opener()方法

    然后调使用urllib2的urlopen()方法,整出一个request,来实现网页的下载

    查看全部
  • urllib2下载网页方法2的对应代码

    导入urllib2模块

    创建Request对象:调用urllib2的Request(),以url作为参数,生成Request对象request

    1.添加数据:使用request的add_data()方法向服务器提交用户数据(如提交 a 这个数据项,它的值为1)

    2.添加header:使用request的add_header()方法向服务器提交头信息(如把爬虫伪装成浏览器)

    发送请求:调用urllib2的urlopen()方法,以request作为参数,来提交网页下载请求

    查看全部
  • urllib2下载网页方法2(增强处理)

    添加一个header:可以向服务器提交最精辟的头信息

    添加一个data:可以向服务器提交用户输入的数据

    将url,data,header这3个参数传给urllib2的request类,生成一个request对象,仍然使用urllib2的urlopen()方法,以request作为参数发送网页请求

    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python语言开发的高级课程 1、Python编程语法; 2、HTML语言基础知识; 3、正则表达式基础知识;
老师告诉你能学到什么?
1、爬虫技术的含义和存在价值 2、爬虫技术架构 3、组成爬虫的关键模块:URL管理器、HTML下载器和HTML解析器 4、实战抓取百度百科1000个词条页面数据的抓取策略设定、实战代码编写、爬虫实例运行 5、一套极简的可扩展爬虫代码,修改本代码,你就能抓取任何互联网网页!

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!