我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python3 爬虫 零基础快速上手(爬

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python3 爬虫 零基础快速上手(爬

(补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)

(补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

 

 

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python3 爬虫 零基础快速上手(爬

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python3 爬虫 零基础快速上手(爬

(补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字)Python是一种面向对象的解释型计算机程序设计语言,类似c,java ,php,JavaScript一种语言,比如,完成同一个任务,C语言要写1000
2023-01-31

零基础如何快速学习好Python网络爬虫

Python网络爬虫上手很快,能够尽早入门,可是想精通确实是需求些时间,需求达到爬虫工程师的级别更是需求煞费苦心了,接下来共享的学习道路是针对小白或许学习Python网络爬虫不久的同伴们。学习网络爬虫能够分三步走,如果你是大神,请直接绕走,
2023-01-31

如何快速上手python爬虫

这篇“如何快速上手python爬虫”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何快速上手python爬虫”文章吧。“爬虫
2023-06-27

Python3 爬虫快速入门攻略

1、定义:网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。2、简介:网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通
2023-01-31

零基础怎么学习Python爬虫

本篇内容主要讲解“零基础怎么学习Python爬虫”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“零基础怎么学习Python爬虫”吧!  零基础如何学爬虫技术?对于迷茫的初学者来说,爬虫技术起步学习
2023-06-01

如何零基础开始写Python爬虫

本篇内容主要讲解“如何零基础开始写Python爬虫”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何零基础开始写Python爬虫”吧!- ❶ -并非开始都是最容易的刚开始对爬虫不是很了解,又没有
2023-06-17

JavaScript基础知识:零基础入门,快速上手

本文将从JavaScript基础知识入手,讲解JavaScript的基本概念、数据类型、运算符、控制语句、函数以及对象等内容,让零基础的读者快速上手JavaScript。 JavaScript 基础知识 数据类型 运算符 控制语句 函数 对象
JavaScript基础知识:零基础入门,快速上手
2024-02-08

0基础怎么快速上手C#

C#是一种强大且广泛使用的编程语言,它在软件开发领域有着重要的地位。对于那些没有编程经验的人来说,学习C#可能会感到有些困难,但是只要掌握了正确的学习方法和技巧,你也可以快速上手C#编程。了解C#的基础知识是非常重要的你可以通过阅读相关的书
2023-10-22

typescript快速上手的基础知识篇

静态类型的typescript与传统动态弱类型语言javascript不同,在执行前会先编译成javascript,因为它强大的type类型系统加持,能让我们在编写代码时增加更多严谨的限制。注意,它并不是一门全新的语言,所以并没有增加额外的学习成本
2022-12-30

零基础考生如何快速上手准备软考初级考试

对于零基础的考生来说,想要快速上手准备软考初级考试,需要制定一个合理的备考计划,并且充分利用各种资源来加速学习进程,帮助考生顺利通过软考初级考试。具体请见下文。
零基础考生如何快速上手准备软考初级考试
2024-09-19

零基础HTML5大前端开发学习路线图,快速上手前端的窍门

近几年,互联网行业新生了很多的职业。在众多的新生职业中备受瞩目的当属前端工程师,薪资高、就业发展前景好,更多的人选择了这一职业成为自己的发展方向,想要自己成为一名合格的前端工程师。下面,千锋分享一个HTML5大前端开发学习的路线图,希望对新
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录