本篇文章的源代码可以在后台回复爬虫来获取。
从今天开始,我们要开始学习Python爬虫来爬取网站上的数据。
首先,我们要知道什么是爬虫,爬虫又是怎么工作的。
爬虫又叫数据挖掘、网络机器人等,是用来帮助人们在网络上收集信息的。它可以让你非常快速的获取一些数据并整理。也就是说,它可以自动在网络上寻找你想要的信息并返回给你。
那么,爬虫是怎么工作的呢?
爬虫主要是以分析网页的源代码来获取信息。比如这段HTML网页代码:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
使用爬虫,很容易就可以分析出它会在页面上显示Hello World。(当然,分析的其实是你而不是爬虫)
好了,了解了这些,我们开始吧。
首先我们要新建一个文件夹来储存我们写的代码。我们叫做小爬虫。
双击进到文件夹里面,右键Open Folder as Pycharm Project来在PyCharm中打开这个文件夹。
在目录中新建一个文件夹,叫做version1.0,里面放我们第一个爬虫代码。
在version1.0中新建一个名为Main的Python文件。
在里面首先导入Python的urllib库中的request文件。
首先我们要有一个网址来打开。我们找一个反爬机制弱的网站。
我们以百度的主页为例。(https://www.baidu.com/)
使用urllib库中的request文件中的urlopen函数来获取源代码。
输出一下。
嗯?这不是我们想要的内容啊?我们想要的是源代码啊?
原来,我们需要继续用decode函数和read函数才可以获得源代码。
尝试一下。
使用UTF-8解码。
我们发现,百度主页有反爬虫机制,我们只爬取到了一部分内容。
换一个网站。
我们使用百度贴吧。
https://tieba.baidu.com/
我的天哪,这怎么看啊?
其实这些内容都只是JavaScript的变量而已,划到最前面。
找了一个HTML代码整理工具整理了一下。
同样可以回复爬虫来获取整理工具的网址。
打开整理完的代码。
没有了CSS的支持,感觉像一堆乱码。
问题是,我们怎么样在一堆代码中找出有用的代码呢?
我们可以使用正则表达式。
假设我们要获取网页的标题,它用标签<title></title>括起来。我们需要知道这中间写的内容。
首先导入正则表达式,就是re。
首先定义一个变量,用于储存正则表达式的语句。
正则表达式中,你不知道的部分可以用.*?来表示。我们不知道<title></title>内的内容,于是写作.*?。
使用re模块的findall来在源代码中寻找<title></title>。
我们将urlopen函数的返回值赋给变量response。
输出一下findall的返回值。
如果不想要外面的<title></title>,可以将.*?用括号括起来。
好的,今天关于urllib的使用以及正则表达式的使用就结束了。想要源代码记得回复爬虫啊。