zoukankan      html  css  js  c++  java
  • python入门(二十讲):爬虫

    什么是爬虫?

    按照一定的规则,自动地抓取万维网信息的程序或脚本。

    爬虫目的:

    从网上爬取出来大量你想获取类型的数据,然后用来分析大量数据的类似点或者其他信息来对你所进行的工作提供帮助。

    为什么选择python做爬虫

    1. 抓取网页本身的接口

    相比与其他静态编程语言,如java,c#,C++,python抓取网页文档的接口更简洁;相比其他动态脚本语言,如perl,shell,python的urllib2包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requestsmechanize

    2. 网页抓取后的处理

    抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

    其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。Life is short, u need python.

    安装包

    pip install beautifulsoup4

    pip install lxml

    pip install html5lib

    python中的数字类型?

    int,str,list,tuple,dict,set,bool,float,

    前端页面的语言支撑:HTML,CSS,JS

    html:标签,组成了页面结构

    css:决定了字体的样式(加粗、下划线)

    js:点击页面有跳转,和服务端有交互,做请求,解析数据

    爬虫总体概括:

     

    实践:

    需求:拿到酷狗音乐网页中的新歌首发的所有数据,并将信息存储到本地。

    from urllib import request     #不用安装urllib

    import time

    import os

    from bs4 import BeautifulSoup

     

    url = "https://www.kugou.com/"

    result = request.urlopen(url).read().decode("utf-8")

     

    soup = BeautifulSoup(result,'lxml')   #BeautifulSoup就是帮你分析html的结构,帮你拿数据#lxml指解析的模式

    for i in soup.find_all("div"):  #找到所有的div标签

        if i.get("id")=="SongtabContent":

            s = i.find_all("li")

     

    with open("e:\music.text","w",encoding = "utf-8") as f:

        for i in s:

            f.write("歌曲名称为:%s;"%i.a.select(".songName")[0].text)   #.songName 等价于 class="songName",i.a.select(".songName")取出来的结果是列表的形式,需要用索引坐标取值,取第一个,".text"表示取出内容

            f.write("歌曲播放连接为:%s;"%i.a.get("href"))    #i.a.get("href")获取href属性的值

            f.write("歌曲播放时间为:%s;"%i.a.select(".songTime")[0].text)

            f.write(os.linesep)

     

    注意:这不算真正意义上的爬虫,因为次级页面也会有很多链接,也需要爬一下。

    .select表示找到这个标签。

    .text表示取这个标签的值。

    .get表示取出属性的值。

  • 相关阅读:
    LintCode A+B问题
    LintCode 斐波纳契数列
    LintCode 删除链表中的元素
    LintCode 整数排序
    c++ lower_bound upper_bound
    259. 3Sum Smaller
    86. Partition List
    209. Minimum Size Subarray Sum
    11. Container With Most Water
    360. Sort Transformed Array
  • 原文地址:https://www.cnblogs.com/suitcases/p/12106913.html
Copyright © 2011-2022 走看看