python爬虫入门_python爬虫入门教程 - CSDN
精华内容
参与话题
  • 作为已经做BI工程师三年的人竟然第一次接触Python,自学Python 哎~~是不是很晚呢 毕业第一年进入SAP BW模块 第二年已经差不多开始懂点什么是数据建模,什么是数据仓库,数据集市 *第三年在公司开始做ETL,数据清洗,...

    第一次写博客&第一次自学Python&第一次实战

    Hi,亲们,本博客只是个人瞎写着记录的:

    • 作为已经做BI工程师三年的人竟然第一次接触Python,自学Python 哎~~是不是很晚呢
    • 毕业第一年进入SAP BW模块
    • 第二年已经差不多开始懂点什么是数据建模,什么是数据仓库,数据集市
    • *第三年在公司开始做ETL,数据清洗,数据整合,报表展示

    到目前所使用过的数据库:
    SAP HANA,SQL server,Greenplum,Mysql,Hadoop,MongoDB,Oracle**

    所使用过的BI工具:
    SAP BO,Tableau,PowerBI,Microsoft CUBE,Tabular等

    唯独目前最火的Python,R等语言 一次都没接触过,因此借此正好有空闲时间来自学一下Python


    入门学习篇

    1. 先明确学习的内容:爬虫!!
      去各种网站搜Python自学教学等教材。
      最好用的还是 w3cschool的资料,不懂得问题直接去Bing搜,就是这么简单粗暴

    2. 边学习边应用:
      个人是比较习惯于一一边学习一边实战的方式。所以一边学习爬虫相关的库, 一边直接应用

    3. 学习到的库:
      BS4
      urlopen
      pyhdb
      datetime
      requests
      re
      也不能说是学完了,应该是有一点点知道了怎么应用,网上资料很多,不懂直接去Bing搜就出来一堆东西啦~哈哈哈哈

    4. 选定一个目标就直接实战:
      称为我猎物的是某DM论坛。(因为个人比较喜欢游戏)

    废话不多说下面就献丑自己乱写的代码,因为没有考虑效率问题,希望能得到更好的建议

    实战篇

    分析

    • 先进入论坛首页,分析网站结构,找出规律

      1、发现搜索列右边已经给出所有游戏类目,找到定位就更简单了。
      把所有类目都放在class=”scbar_hot_td”下的id=”scbar_hot”下 class=‘xi2’
      Href=后面直接有每个类目地址
      这里写图片描述

    2、打开每个类目地址又发现一个很有规律性的逻辑~~哈哈太有趣
    每个类目下都按一定规律写了游戏论坛地址和名称,让我更简单的利用爬虫来爬取数据提供了很强大的支持。

    这里写图片描述

    这里写图片描述

    3、进入每款游戏论坛地址也一样,都按一定规律编写每个帖子的基本信息

    比如class=”new” 存放帖子类型、帖子标题、热度等信息
    class=”by”存放创建者创建日期、最后回复人以及最后回复日期等
    class=”num”存放查看数、回复次数

    这里写图片描述

    编写Python

    提取每款游戏信息:

    def getgrand(url):

    #URL就是网页地址
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}  # 设置头文件信息 #
    response = requests.get(url, headers=headers).content  # 提交requests get 请求
    soup = BeautifulSoup(response, "html.parser")  # 用Beautifulsoup 进行解析
    commid = soup.findAll('a', class_='xi2') ##这里找出所有xi2类
    for commid2 in commid[2:-1]: ##爬取论坛首页
        href=commid2.get("href") ##这里要抽取每个游戏类目地址
        if len(href.split("-"))>=2 :
            id=href.split("-")[1] ##这里要抽取每个类目ID,后面做数据模型的时候用
            site=url+href  #完整的游戏类目地址
            print(site)
            cate=commid2.text   #这里要抽取每个游戏类目名称
            if check_contain_chinese(cate) == True:  ## 相当于数据清洗,因为抽取有可能不是类目名称,排除不是中文的名称
                response2 = requests.get(site, headers=headers).content  # 提交requests get 请求
                soup2= BeautifulSoup(response2, "html.parser")  # 用Beautifulsoup 进行解析
                catmid=soup2.findAll('dt')
                intohana_grandcat(conn, id, cate, site)##导入到HANA数据库里 建立类目维表
                # print(catmid)
                # print(cate)
                for catmid2 in catmid: ##爬取每个游戏首页 
                    a=catmid2.findAll("a")[0]
                    href2=a.get("href")
                    gamename=a.text  ## 提取游戏名称
                    # print(gamename)
                    if (len(href2.split("-"))>=2) & (href2[-4:]=="html") :    ##数据清洗,清理垃圾数据
                        site2=url+href2  ## 提取出每款游戏地址
                        id2=href2.split("-")[1]  ##每款游戏ID
    
                #         print(a)
                #         print(id2)
                #         print(site2)
                        intohana_game(conn, id, cate, id2, gamename, site2)  ###建立游戏维度维表
                        getdetail(site2,conn,id,id2,gamename)  ## get detail of blog information ##要爬取每个游戏论坛地址
    

    爬取每个游戏论坛地址:

    def getdetail(site,conn,GRAND_ID,GAME_ID,GAME_NAME): ## get detail of blog information

    globals()   #定义所用到的所有全局变量
    type=''
    theme=''
    replynum=''
    readnum=''
    editor=''
    createdate=''
    lastreply=''
    lastreplydate=''
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}  # 设置头文件信息 #
    
    response3 = requests.get(site, headers=headers).content  # 提交requests get 请求
    soup3 = BeautifulSoup(response3, "html.parser")  # 用Beautifulsoup 进行解析
    gamemid = soup3.findAll('th', class_='new')  
    td = soup3.findAll('td', class_='by')
    for tbody in soup3.findAll('tbody'):   ##对每个tbody进行解析
        for tr in tbody.findAll('tr'):   ##对每个tbody的tr进行解析
            for new in tr.findAll('th', class_='new'):  ##对每个tbody的tr下class_=new进行解析
                em = new.find('em')    #抽取帖子类型
                if em:    ##数据清洗
                    type = em.text[1:-1]
                else:
                    type = ''
                theme = new.find('a', class_='s xst').text #抽取帖子主题
                num = tr.find('td', class_='num')  ###get reply & read #抽取帖子查看和回复次数
                if num:  ##数据清洗
                    replynum = num.find('a').text 
                    readnum = num.find('em').text
                else:
                    replynum='0'
                    readnum='0'
                # print(type, theme, replynum, readnum)
            by = tr.findAll('td', class_='by')  # get editor & date #抽取每个帖子 创建者和最后回复人
            if by: ##数据清洗
                for uby in by[:1]:  # get editor & date
                    createdate = uby.find('em').text
                    editor = uby.find('cite').text
                # print(editor,createdate)
                for uby in by[1:]:  # get editor & date
                    lastreply = uby.find('cite').text
                    lastreplydate = uby.find('em').text
                # print(editor, createdate, lastreply, lastreplydate)
                # print(lastreply, lastreplydate)
            intohana_blogdetail(conn,GRAND_ID,GAME_ID,GAME_NAME,type,theme,replynum,
                                readnum,editor,createdate,lastreply,lastreplydate,current_daytime) # 对每条数据逐步insert到数据库表建立Fact实时表
    

    整个代码发布到GIT上,做了点简单的现状分析

    https://github.com/zangmeisim/YouminAnalysis

    简单分析:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    工具

    PyCharm
    SAP HANA
    SAP BO
    EXCEL

    改进

    1、不知道怎么改进代码,就感觉做的太粗糙,希望有人指导
    2、分析目的不明确,导致抽取的数据没有目的性。
    3、希望有大神能教点分析方法。

    展开全文
  • Python爬虫(一):编写简单爬虫之新手入门

    万次阅读 多人点赞 2018-10-18 16:11:15
    最近学习了一下python的基础知识,大家一般对“爬虫”这个词,一听就比较熟悉,都知道是爬一些网站上的数据,然后做一些操作整理,得到人们想要的数据,但是怎么写一个爬虫程序代码呢?相信很多人是不会的,今天写一...

    最近学习了一下python的基础知识,大家一般对“爬虫”这个词,一听就比较熟悉,都知道是爬一些网站上的数据,然后做一些操作整理,得到人们想要的数据,但是怎么写一个爬虫程序代码呢?相信很多人是不会的,今天写一个针对新手入门想要学习爬虫的文章,希望对想要学习的你能有所帮助~~废话不多说,进入正文!

    一、准备工作

    1、首先代码使用python3.x编写的,要有一个本地的python3环境。

    python下载地址页面:https://www.python.org/downloads/release/python-370/

    2、然后要有一个开发工具,推荐PyCharm,一款很好的Python交互IDE。Python自带编译器 -- IDLE也可以。

    PyCharm下载地址页面:https://www.jetbrains.com/pycharm/download/

    3、准备工作都做好就可以做开发在IDE里编写代码程序了。

    二、简单爬虫代码开发

    以豆瓣网为例,爬取豆瓣官网页面,看看能获取到什么东西,代码如下:

    代码:

    # -*- coding: utf-8 -*-
    import urllib.request
    
    # 1、网址url  --豆瓣网
    url = 'http://www.douban.com'
    
    # 2、直接请求  返回结果
    response = urllib.request.urlopen(url)
    
    # 3、获取状态码,如果是200表示获取成功
    print ('状态码:',response.getcode())
    
    # 4、读取内容
    data = response.read()
    
    # 5、设置编码
    data = data.decode('utf-8')
    
    # 6、打印结果
    print (data)

    运行结果:

    截取部分代码如下,第一行是状态码:200,表明获取成功,下面是爬取到的豆瓣页面代码,由于内容过多,故截取以下部分内容。

    感兴趣的小伙伴可以动手试试,欢迎交流~~

    觉得不过瘾,看下一篇文章。

    接下一篇文章:Python爬虫(二):爬虫获取数据保存到文件

    展开全文
  • 小白也能懂得python爬虫入门教程

    万次阅读 2018-09-22 22:56:22
    此文属于入门级级别的爬虫,老司机们就不用看了。 本次主要是爬取网易新闻,包括新闻标题、作者、来源、发布时间、新闻正文。 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻。然后鼠标...

    此文属于入门级级别的爬虫,老司机们就不用看了。

    本次主要是爬取网易新闻,包括新闻标题、作者、来源、发布时间、新闻正文

    首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻。然后鼠标右键点击查看源代码,发现源代码中并没有页面正中的新闻列表。这说明此网页采用的是异步的方式。也就是通过api接口获取的数据。

    那么确认了之后可以使用F12打开谷歌浏览器的控制台,点击Network,我们一直往下拉,发现右侧出现了:"… special/00804KVA/cm_guonei_03.js? … "之类的地址,点开Response发现正是我们要找的api接口。

    在这里插入图片描述
    可以看到这些接口的地址都有一定的规律:“cm_guonei_03.js”、 “cm_guonei_04.js”,那么就很明显了:

    http://temp.163.com/special/00804KVA/cm_guonei_0(*).js

    上面的连接也就是我们本次抓取所要请求的地址。
    接下来只需要用到的python的两个库:

    1. requests
    2. json
    3. BeautifulSoup

    requests库就是用来进行网络请求的,说白了就是模拟浏览器来获取资源。
    由于我们采集的是api接口,它的格式为json,所以要用到json库来解析。BeautifulSoup是用来解析html文档的,可以很方便的帮我们获取指定div的内容。

    下面开始编写我们爬虫:

    第一步先导入以上三个包:

    import json
    import requests
    from bs4 import BeautifulSoup
    

    接着我们定义一个获取指定页码内数据的方法:

    def get_page(page):
        url_temp = 'http://temp.163.com/special/00804KVA/cm_guonei_0{}.js'
        return_list = []
        for i in range(page):
            url = url_temp.format(i)
            response = requests.get(url)
            if response.status_code != 200:
                continue
            content = response.text  # 获取响应正文
            _content = formatContent(content)  # 格式化json字符串
            result = json.loads(_content)
            return_list.append(result)
        return return_list
    

    这样子就得到每个页码对应的内容列表:

    在这里插入图片描述
    之后通过分析数据可知下图圈出来的则是需要抓取的标题、发布时间以及新闻内容页面。
    在这里插入图片描述

    既然现在已经获取到了内容页的url,那么接下来开始抓取新闻正文。

    在抓取正文之前要先分析一下正文的html页面,找到正文、作者、来源在html文档中的位置。

    我们看到文章来源在文档中的位置为:id = “ne_article_source” 的 a 标签
    作者位置为:class = “ep-editor” 的 span 标签
    正文位置为:class = “post_text” 的 div 标签

    下面试采集这三个内容的代码:

    def get_content(url):
        source = ''
        author = ''
        body = ''
        resp = requests.get(url)
        if resp.status_code == 200:
            body = resp.text
            bs4 = BeautifulSoup(body)
            source = bs4.find('a', id='ne_article_source').get_text()
            author = bs4.find('span', class_='ep-editor').get_text()
            body = bs4.find('div', class_='post_text').get_text()
        return source, author, body
    
    

    到此为止我们所要抓取的所有数据都已经采集了。

    那么接下来当然是把它们保存下来,为了方便我直接采取文本的形式来保存。下面是最终的结果:
    在这里插入图片描述

    格式为json字符串,“标题” : [ ‘日期’, ‘url’, ‘来源’, ‘作者’, ‘正文’ ]。

    要注意的是目前实现的方式是完全同步的,线性的方式,存在的问题就是采集会非常慢。主要延迟是在网络IO上,下次可以升级为异步IO,异步采集,有兴趣的可以关注下次的文章。

    展开全文
  • python3 爬虫 零基础快速上手(爬虫示例)

    万次阅读 多人点赞 2017-12-22 09:55:26
    (补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字) Python是一种面向对象的解释型计算机程序设计...Python是一种高级的语言。 一:python 安装:首先,根据你的Windows版本(...

    (补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字)

    Python是一种面向对象的解释型计算机程序设计语言,类似c,java ,php,JavaScript一种语言,比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。Python是一种高级的语言。

    一:python 安装:首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.6对应的64位安装程序32位安装程序

     

    特别要注意勾上Add Python 3.6 to PATH,然后点“customize installation"

    点击Next

    (补1:当在安装过程中出现报错,0x80072f7d,在安装时最后两项 和debugging相关的不要打勾,好像是和VS2015有关)

    Install

    运行Python

    安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:

     

     

     

     

    看到上面的画面,就说明Python安装成功!

    你看到提示符>>>就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)

    注意:命令行退出可能习惯用ctrl +C,这时用

    会报错,,,退出用exit()就可以了。

    但还可以得到一个错误:

    ‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

     

    这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选Add Python 3.6 to PATH,那就要手动把python.exe所在的路径添加到Path中。

    添加路径:在菜单中打开系统菜单 点选 计算机->属性->系统

     

    添加完成在cmd再次输入python,就可以了。

    二:python 安装 第三方库

    确保安装时勾选了pipAdd python.exe to Path

    现在下载几个需要常用的第三方库

    启动cmd 输入pip

     

    表示pip 可以使用

     

    安装Pillow:PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

    $ pip install pillow

     

     

     

    安装requests:内置的urllib模块,用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能.更好的方案是使用requests。它是一个Python第三方库,处理URL资源特别方便

    $ pip install requests

     

     

     

     

    安装beautifulsoup4:Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据

    $ pip install beautifulsoup4

     

    安装lxml:xml是Python中与XML及HTML相关功能中最丰富和最容易使用的库。lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化的绑定。

     

    $ pip install lxml

    安装matplotlib:Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形

     

    $ pip install matplotlib

     

     

    接下来进入正题:

    以上准备都是给这边做基础

    http://blog.csdn.net/s740556472/article/details/78239204

    从git上下载下来,

    https://github.com/unlimitbladeworks/spider_csdn.git

     

    下载下来

     

    找到路径启动python解释器

     

    在python解释器中

    ctrl +O 打开目录,找到下载的文件,选中csdn.py 打开

     

     

     

    在这我厚颜无耻的把代码抄了过来,为了表示对原作者的尊敬,原参数链接我就不进行修改了,

     

    #coding = utf-8
    import requests
    from bs4 import BeautifulSoup as bs
    import re
    import time
    
    # 访问我的博客
    def spider(url, headers):
        r = requests.get(url=url, headers=headers)
        html = r.text
        # 解析html代码
        soup = bs(html, 'lxml')
        ul = soup.find(name='ul', attrs={'id': 'blog_rank'})
        # 获取ul下的第一个li节点,正则表达式需要字符串,所以转化一下
        li = str(ul.find_next('li'))
        numbers = re.findall(r'span>(.+?)次</', li)
        # print(numbers)
        # 获取当前年月日
        date = time.strftime("%Y-%m-%d", time.localtime())
        # 拼接日期
        numbers.append(date)
        text_save(numbers, 'visitorNumber.txt')
        print('成功执行!')
    
    # 文件存储
    def text_save(content, filename, mode='a'):
        # Try to save a list variable in txt file.
        file = open(filename, mode)
        for i in range(len(content)):
            # 如果索引为最后一位,去掉空格且拼上换行符,否则剩下的后面拼接逗号
            if i == len(content) - 1:
                number = (content[i]) + '\n'
            else:
                number = str(content[i]) + ','
            file.write(number)
        file.close()
    
    
    if __name__ == '__main__':
    
        url = "http://blog.csdn.net/s740556472/article"
        headers = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Host': 'blog.csdn.net',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
        }
        spider(url, headers)

    (补:由于CSDN页面改版,之前的方法解析不到,特此此补充最新的)

    #coding = utf-8
    import requests
    from bs4 import BeautifulSoup as bs
    import re
    import time
    import json
    
    # 访问我的博客
    def spider(url, headers):
        r = requests.get(url=url, headers=headers)
        html = r.text
        # 解析html代码
        soup = bs(html, 'lxml')
        #print(soup);
        #ul = soup.find(name='ul', attrs={'class': 'mod_my_t clearfix'})
        ul = soup.find('div', attrs={'class':'grade-box'})
        #uli=ul.find_next_siblings('li')
        print(ul);
        #查看bs4的文档 find 方法 查找元素,find_next_siblings获取兄弟元素
        text=ul.find("dt", text="访问:").find_next_siblings();
        
        print(text);
        
        t=text[0];
        print(t)
        #将Tag元素转为字符串
        t3=str(t);
        #上面的find是bs4的方法,这里的是字符串的find
        t0=t3.find("title=",0,len(t3))
        t1=t3.find(">", 0, len(t3))
        
        print(t0);
        print(t1);
        #截取数字
        numbers=t3[t0+7:t1-1];
        print(numbers);
        #将字符串类型转列表
        numbers=numbers.split(" ")
        #text1=soup.find_all("dt", text="访问:")
        #print(text1);   
        # 获取当前年月日
        date = time.strftime("%Y-%m-%d", time.localtime())
        # 拼接日期
        numbers.append(date)
        text_save(numbers, 'raningDate.txt')
        print('成功执行!')
    
    # 文件存储
    def text_save(content, filename, mode='a'):
        # Try to save a list variable in txt file.
        file = open(filename, mode)
        for i in range(len(content)):
            # 如果索引为最后一位,去掉空格且拼上换行符,否则剩下的后面拼接逗号
            if i == len(content) - 1:
                number = (content[i]) + '\n'
            else:
                number = str(content[i]) + ','
            file.write(number)
        file.close()
    
    
    if __name__ == '__main__':
    	
        url = "https://blog.csdn.net/ruiti/article/details/82715601"
        headers = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Host': 'blog.csdn.net',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
        }
        spider(url, headers)
    

    (补1:其中很多的当时测试的注释打印没有删除,希望可以帮助你的理解)

    F5键 启动程序就执行了!(补1:结果应该是不变的)

     

    此代码执行完成!

     

    接下来就是去代码里看如何实现程序的了!

    原文使用windows每天定时执行脚本生成一个类似日志的文件

     

    感兴趣的小伙伴可以自己去原本看,链接在上面,我们现在用python写一个小脚板,让他一次性生成一个这样的txt内容

    在解释器页面ctrl+N新建一个文件,上代码

     

    # -*- coding: utf-8 -*-
    
    
    import datetime # 提供操作日期和时间的类
    import random   # 提供随机数类
    
    
    print ("开始注入数据")
    
    try:
        fobj=open("drnData.txt",'a')                        # 这里的a意思是追加,这样在加了之后就不会覆盖掉源文件中的内容,如果是w则会覆盖。
    except IOError:
        print ('*** file open error create')
    else:  
           
        for index in range(20):                         #for 循环生成20条数据
            randNum=random.randint(0,10)                #随机一个0-10的数
            randNUm=randNum+index*10                    #为了让随机的数是越来越大
            cur_date = datetime.datetime(2017, 10, 19) + datetime.timedelta(index) #获取日期函数 其实日期datetime.datetime(2017, 10, 19):2015-10-19+ 00:00:00  +datetime.timedelta(index):推迟的天数
            time_format = cur_date.strftime('%Y%m%d')   #将时间日期转换成我们需要的格式
            txtString =str(randNUm)  +","+str(time_format)#拼接字符串 将数据和日期拼接起来
            fobj.write(txtString+'\n')                  #这里的\n的意思是在源文件末尾换行,即新加内容另起一行插入。写入文件
            
        fobj.close()                              #   特别注意文件操作完毕后要close
    
    print ("注入数据结束")

     

     

    这个就是自己写的了,感觉不那么心虚了!

    保存到一个目录下,然后F5运行代码,drnData.txt生成在同目录下

     

    生成如下数据

     

     

    1,20171019
    18,20171020
    20,20171021
    35,20171022
    49,20171023
    58,20171024
    70,20171025
    72,20171026
    84,20171027
    93,20171028
    108,20171029
    120,20171030
    122,20171031
    135,20171101
    148,20171102
    155,20171103
    165,20171104
    177,20171105
    183,20171106
    193,20171107


    现在数据生成,那么我们开始将数据转换成表格

     

    现将之前下载的drawBydata.py放到数据生成的同目录下

    用解释器打开drawBydata.py,修改文件中打开文件的名称代码如下

     

    #coding=utf-8
    
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import datetime  
    import decimal
    #根据数据动态画图
    def drawBydata():
        #读取输出的txt文档
        (recordDate,y) = readData('drnData.txt')
        #获取记录的日期列表范围(0,)
        x = range(len(recordDate))
        # plt.figure() 开始画图,r:红色
        #http://www.360doc.com/content/15/0113/23/16740871_440559122.shtml
        plt.plot(x,y,'ro-')
        #rotation,x轴字体旋转的角度
        plt.xticks(x, recordDate,rotation=70)
        plt.margins(0.08)
        plt.subplots_adjust(bottom=0.15)
        #设置x轴的名字
        plt.xlabel("Date")
        plt.ylabel("Visitors")
        #图的标题
        plt.title("My blog visit analysis") 
        plt.show()
        print('执行成功!') 
    
    #读取数据
    def readData(fileName):
        #以只读文件打开
        inFile = open(fileName,'r')
        #定义第一列数据为博客访问量
        visitors = []
        #第二列数据为日期
        recordDate = []
        #遍历文件每一行
        for line in inFile:
            #逗号分隔
            trainingSet = line.split(',')
            #将第一列和第二列数据拼入对应的列表中
            visitors.append(trainingSet[0])
            recordDate.append(trainingSet[1])
        inFile.close()
        return (recordDate,visitors)
    
    if __name__ == '__main__':
        drawBydata()
    


    点击F5运行 生成如下图像

     

     

     

     

    这是什么鬼??查了很多原因有查了下matplotlib的参数用法最后发现了bug.......

     

     

    visitors = list(map(int, visitors))
    plt.plot(x,visitors,'ro-')

     

     

     

     

     

    原因是输入的值是字符串,将字符串装为数字就可以了,得到最终图形

     

     

    完成,,有问题的小伙伴可以给我留言,,一起探讨下再见 

    (补2:有兴趣的可以看下抓取淘宝数据:

    https://blog.csdn.net/ruiti/article/details/82846768

     

     

     

     

    展开全文
  • Python 网络爬虫入门详解

    万次阅读 多人点赞 2018-01-28 21:01:42
    什么是网络爬虫    网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。 优先申明:...
  • Python爬虫入门项目

    万次阅读 多人点赞 2017-12-25 16:26:21
    Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的...
  • python3爬虫入门

    万次阅读 多人点赞 2018-06-08 14:52:31
    转载请1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889注明作者和出处: ...
  • 何谓爬虫所谓爬虫,就是按照...爬虫三要素抓取分析存储基础的抓取操作1、urllib在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。只能通过urllib进行操作import urllib....
  • Python3网络爬虫快速入门实战解析

    万次阅读 多人点赞 2017-09-28 14:48:41
    请在电脑的陪同下,阅读本文。本文以实战为主,阅读过程如稍有不适,还望多加练习。 本文的实战内容有:网络小说下载(静态网站)、优美壁纸下载(动态网站)、爱奇艺VIP视频下载 PS:本文为Gitchat线上分享文章,该文章...
  • python爬虫入门教程(二):开始一个简单的爬虫

    万次阅读 多人点赞 2017-09-12 15:02:21
    python爬虫入门教程,介绍编写一个简单爬虫的过程。
  • Python/打响2019年第一炮-Python爬虫入门(一)

    万次阅读 多人点赞 2019-01-01 18:15:36
    打响2019第一炮-Python爬虫入门   2018年已经成为过去,还记得在2018年新年写过一篇【Shell编程】打响2018第一炮-shell编程之for循环语句,那在此时此刻,也是写一篇关于编程方面,不过要比18年的稍微高级点。 So...
  • python爬虫入门教程(一):开始爬虫前的准备工作

    万次阅读 多人点赞 2017-09-07 18:08:50
    python爬虫(数据采集)入门教程
  • 原计划继续写一下关于手机APP的爬虫,结果发现夜神模拟器总是卡死,比较懒,不想找原因了,哈哈,所以接着写后面的博客了,从50篇开始要写几篇python爬虫的骚操作,也就是用Python3通过爬虫实现一些小工具。...
  • 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情。希望可以做好。 为了写好爬虫,我们需要准备一个火狐浏览器,还需要准备...
  • Python爬虫入门

    千次阅读 多人点赞 2018-05-31 16:24:20
    Python爬虫介绍 聚焦爬虫和通用爬虫 爬虫根据其使用场景分为通用爬虫和聚焦爬虫,两者区别并不是很大,他们获取网页信息的方式是相同的。但通用爬虫收集网页的全部信息,而聚焦爬虫则只获取和指定内容相关的网页...
  • 爬虫100例的原则上最后一篇文章,很激动,有很多话想说,请允许我写这么一篇唠唠叨叨的文章。 写爬虫系列很迷,估计和很多进入爬虫编码圈的人一样,单纯的我只想看一些图片,然而一页页的去翻,真的好麻烦,总想着...
  • 啥?数据分析库也能写爬虫!是的,没错,爬虫爱好者就没有不能干的事情。帮粉丝写爬虫Python+Pandas爬取河北单招学校
  • 双色球预测,一个神奇的领域,多少人都想实现自动化处理,毕竟谁能掌握规律,谁就掌握了快速到达彼岸的资格。
  • Python爬虫入门到精通

    2018-05-15 10:49:51
    这是一套目前为止我觉得最适合小白学习的体系非常完整的Python爬虫课程,使用的Python3.6的版本,用到anaconda来开发python程序,老师讲解的很细致,非压缩,无需下载即可在线观看
  • 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 本文档从比较适合小白学习,从零基础开始到爬虫的实例
1 2 3 4 5 ... 20
收藏数 36,140
精华内容 14,456
关键字:

python爬虫入门