Python网络爬虫基础

基础知识讲解部分(网络爬虫入门)

网络爬虫就是自动地从互联网上获取程序。想必你听说过这个词汇,但是又不太了解,大家会觉得掌握网络爬虫还是要花一些功夫的,因此这个门槛让你有点望而却步。我常常觉得计算机和互联网的发明给人类带来了如此大的便利,让人们不用阅读说明书就知道如何上手,但是偏偏编程的道路却又是如此艰辛。因此,我会尽可能做到浅显易懂,希望读者能够读懂我说了什么,从而能够享受到其中的快乐。

基本介绍

我是一名学生,通过学习Python网络爬虫从入门到实践(第二版)发现了其中的一些问题,这里我会一一告诉大家,我的主要目的是讲解网络爬虫的基础部分,后面会介绍几个实践。同时呢,我是第一次写博客,有什么编辑上的不完善请大佬多多指教,希望大家多多阅读我的文章,thank you very much!工欲善其事必先利其器,在学习爬虫代码之前,我们必须知道python的基础,这就好比是盖楼必须要打好地基,毕竟万丈高楼平地起啊!同时我还会介绍一下爬虫中的一些知识。

爬虫知识介绍

Robots协议

网络爬虫目前还处于早期的拾荒阶段,虽然互联网世界已经通过自身的协议建立起一定的道德规范(Robots协议),但法律部分还在建立和完善中。从目前的情况来看,如果抓取的数据属于个人使用或科研范畴,基本不存在问题;而如果数据属于商业盈利范畴,就要就事而论,有可能属于违法行为,也有可能不违法。
Robots协议(爬虫协议)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎那些页面可以抓取,哪些页面不可以抓取,该协议是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。
下面以淘宝网的robots.txt为例进行介绍
这里仅截取部分代码,查看完整代码可以访问https://www.taobao.com/robots.txt

User-agent: Baiduspider #百度爬虫引擎
Allow: /article #允许访问/article.htm、/article/12345.com等
Allow: /oshtml
Allow: /ershou
Allow: /$
Disallow: /product/ #禁止访问/product/12345.com
Disallow: / #禁止访问除Allow规定页面的其他所有页面
###########################################
User-Agent: Googlebot #谷歌爬虫引擎
Allow: /article #允许访问/article.htm、/article/12345.com等
Allow: /oshtml
Allow: /ershou
Allow: /spu
Allow: /dianpu
Allow: /oversea
Allow: /list
Allow: /ershou
Allow: /$
Disallow: / #禁止访问除Allow规定页面的其他所有页面

当你在百度搜索“淘宝”的时候,淘宝上不会出现二手商品信息,而在Google上搜“淘宝”的时候会出现二手商品信息呢,就是因为有上述代码,如图所示:
在这里插入图片描述
由于谷歌是国外的网站,使用要翻墙,所以这里不显示在谷歌上搜淘宝的图片了。

网络爬虫的约束

2016年11月7日,全国人民代表大会常务委员会在通过了《中华人民共和国网络安全法》,2017年6月1日正式实施。如果爬虫爬取的是商业网站,并且目标网站使用了反爬虫机制,那么强行突破反爬虫机制可能构成非法侵入计算机系统罪、非
法获取计算机信息系统数据罪。如果目标网站有反爬虫声明,那么对方在被爬虫爬取以后,可以根据服务器日志或者各种记录来起诉使用爬虫的公司。在道德方面,就是要遵守Robots协议。

Python爬虫流程

网络爬虫的流程非常简单,主要分为三部分:
(1)获取网页;
获取网页就是给一个网址发出请求,该网址会返回整个页面的数据。类似于在浏览器中键入网址并按回车键,然后可以看到网站的整个页面。
(2)解析网页(提取数据);
解析网页就是从整个网页的数据中提取想要看的数据。类似于在浏览器中看到网站的整个页面,但是你想找的是产品的价格,价格就是你想要的数据。
(3)存储数据。
存储数据也很容易理解,就是把数据存储下来。我们可以存储在csv中,也可以存储在数据库中。

获取网页
解析网页
存储数据

Python基础讲解

Python的安装

在学习python之初,要先安装python环境和其相关编辑器,为了成功使用python,首先我们得去官网下载安装包https://www.python.org/getit/,这里我们选择下载版本2.7.14,当然你也可以选择3.0以上的版本,界面下方有版本列表,你可以根据你的实际需求选择下载安装包,下载的时候注意要根据你的电脑系统来进行选择。
在这里插入图片描述
下载完之后就可以进行安装了,双击打开,默认选择安装适合所有人的那项,下一项是自定义安装,然后下一步选择安装路径,路径我不习惯放在系统盘,这里就装在D盘为例,下一步,这里最后一项有个选择,这里选择第二项,安装的时候会自动为你配置环境变量,省得自己再去配了,OK下一步,完成安装。

在这里插入图片描述
在这里插入图片描述
安装好之后我们得确认一下环境变量是否配置进去了,鼠标右击我的电脑,属性,高级系统设置,环境变量,查看path
在这里插入图片描述
如果完成了这些步骤,那么我要恭喜你,python环境你已经搭建好了,下面我们要选择python编辑器了,我见到写爬虫书的作者使用的是Anaconda,但我就是不用他用到编辑器,因为我找到了我觉得更加方便的python编辑器——pycharm,pycharm不仅可以运行爬虫,还可以进行机器学习呢,是不是很棒?我们要安装社区版的,因为企业版的要花钱呢。下面是pycharm的安装,很简单呢。

首先在下面链接http://www.jetbrains.com/pycharm/download/#section=windows进入如下页面,并点击箭头指示的地方进行下载。
在这里插入图片描述
下载好以后,点击安装包进行安装,安装到任意磁盘(推荐D盘),安装好启动pycharm,如图所示:
在这里插入图片描述
在这里插入图片描述

python基础

1.字符串(string)

字符串是最常见的数据类型,一般用来存储类似“句子”的数据,并放在单引号‘ ’或双引号“ ”中,如果要连接字符串,那么可以简单地加起来。

string1 = 'Python Web Scrappy'
string2 = 'by Santos'
string3 = string1 + " " + string2
print(string3)

Python Web Scrappy by Santos

2.数字(Number)

数字用来存储数值,包含两种常用的数字类型:整数(int)和浮点数(float),其中浮点数由整数和小数部分组成。两种类型之间可以相互转换,如将整数转换为浮点数,就在变量前加上float;如果将浮点数转换为整数,就在变量前加上int,例如:

int1 = 7
floatl = 7.5
trans_int = int(floatl)
print(trans_int)

7

3.列表(list)

如果需要把上述字符串和数字囊括起来,就可以使用列表。列表能够包含任意种类的数据类型和任意数量。创建列表非常容易,只要把不同的变量放入方括号中,并用逗号分隔即可,例如:

list1= ['Python','Web','Scrappy']
list2 = [1,2,3,4,5]
list3 = ["a",2,"c",4]
print("list[0]: ", list1[0])
print("list2[1:3]: ", list2[1:3])
list1[1] = "new"
print(list1)

list[0]: Python
list2[1:3]: [2, 3]
[‘Python’, ‘new’, ‘Scrappy’]

4.字典(Dictionary)

字典是一种可变容器模型,正如其名,字典中含有“字”(键值,key)和值(value),使用字典就像是自己创建一个字典和查字典的过程。每个存储的值都对应着一个键值key,key必须唯一,但是值不同。值也可以取任何数据类型,例如:

namebook = {"Name": "Alex", "Age": 7, "Class": "First"}
print(namebook["Name"])
print(namebook)
for key, value in namebook.items():
    print(key, value)

Alex
{‘Name’: ‘Alex’, ‘Age’: 7, ‘Class’: ‘First’}
Name Alex
Age 7
Class
First

条件语句和循环语句

条件语句可以使得党满足条件的时候才执行某部分代码。条件为布尔值,也就是只有True和False两个值。当if判断条件成立时才执行后面的语句;当条件不成立的时候,执行else后面的语句,例如:

book = "java"
if book == "python":
    print("You are studying python.")
elif book == "java":
    print("You are studying java.")
else:
    print("Wrong.")

You are studying java.

循环语句能让我们执行一个代码片段多次,循环分为for循环和while循环。for循环能在一个给定的顺序下重复执行:

citylist = ["Beijing", "Shanghai", "Guangzhou"]
for eachcity in citylist:
    print(eachcity)

Beijing
Shanghai
Guangzhou

while循环能不断重复执行,只要能满足一个条件,例如:

count = 0
while count < 3:
    print(count)
    count += 1

0
1
2

函数(Functions)

一个函数包括输入参数和输出参数,python的函数功能可以用 y = x + 1 的数学函数来理解,在输入 x = 2 的参数时,y输出3。但是在实际情况中,某些函数输入和输出参数可以不用指明。下面定义一个函数:

def calulus (x):
    y = x + 1
    return y
result = calulus(2)
print(result)

3

面向对象编程

随着时间的推移,在编程的方式上又发展出了面向对象编程。面向对象编程是把函数进行分类和封装以后放入对象中,使得开发更快、更强,例如:

class Person:
    def __init__(self, name, age):  #_init_方法称为类的构造方法
        self.name = name
        self.age = age
    def detail(self):  #通过self调用被封装的内容
        print(self.name)
        print(self.age)
obj1 = Person('santos', 18)
obj1.detail()  #python将obj1传给self参数,此时内部self=obj1

santos
18

结尾

感谢大家能够看到这里,以后我就要写关于爬虫的代码了,不懂的部分会在代码旁详细解释。

发布了9 篇原创文章 · 获赞 67 · 访问量 5681
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章