初学python爬虫, 爬什么网站比较简单?

本文就初学者来说,教大家怎么爬虫。现学现卖,看完再自己操作操作就会了~我就是这么学的,分享给想用python爬虫的小伙伴:

放个懒人目录:

  1. 网络爬虫的行径
  2. URL初步的概念
  3. python与urllib2
  4. 合理爬数据的身份
  5. 以贴吧为例的小爬虫
  6. python爬虫

1.爬虫程序会高效且准确的拿到我们想要在网上获取的信息。不多说了,了解一下爬虫的行为:网页首页→读取网页内容→找到网页的其他链接→其他的网页首页…

在这里插入图片描述
也就是这样的循环,知道这个网站上面所有的网页都吃光。

2.URL的初步概念首先介绍一下浏览网页的基本过程:随便找个你要爬的地址

  • 本地浏览器(客户端)--------请求-----→传智服务器
  • 本地浏览器(客户端)←-----文件数据----传智服务器
  • 本地浏览器(客户端)进行解析文件数据并且展现

在这里插入图片描述
3.python与urllib2

在下面的例子里面我用的是python2.7.x版本。这里我们需要的组件是:urllib2(它是python获取URL的一个组件)

首先我们要创建一个urllib2_test01.py,输入下面代码:
在这里插入图片描述
其实最简单的获取信息需要的代码只有四行,然后就要执行了。可以写:

python urllib2_test.py

执行以后看到的结果如下:
在这里插入图片描述
实际上,我们在浏览器上面打开的百度主页,右键选择查看源代码的话,就能发现,跟我们刚刚执行后看到的结果是一模一样的,也就是说上面这四个代码已经帮我们把百度首页的全部代码爬了下来。下面解释一下这4行代码的意思:

import urllib2

上面这步就是把刚刚说的组件(urllib2)引入给我们提供使用

response = urllib2.urlopen( 'http://www.baidu.com;)

然后调用urllib2库中的URLopen这个方法是接受一个url地址,然后把请求以后我们得到的回应封装到一个叫response的对象里面;

扫描二维码关注公众号,回复: 14680396 查看本文章
html = response.read()

之后调用response对象read()方法,把请求的回应内容用字符串的形式给html这个变量。最后的话print html就是把这些字符串打出来。上面就是最最基本的url请求对应的python代码。

还有第二种写法:
在这里插入图片描述

这是将一个url的地址转换成一个request请求对象,再将request请求对象作为参数传递给urlopen的方法。但是直接用组件给网站发送一个请求的话,很唐突。就好像陌生人直接推开我们的房门就进来了,所谓房间的主人就会拒绝。

4.合理身份

这个时候我们就需要给上面代码加一个合理的身份,也就是User-Agent;这个抬头呢只需要了解就可以,作用就是浏览器是世界上被允许的身份,我们需要伪装成一个被公认的浏览器。我们伪装的办法就是给自己的请求上面加一个User-Agent头

下面开始操作,编辑urllib_test03.py

在这里插入图片描述
上面就是url一个的基本操作,如果想要实现一个简单的爬虫,上面这些就足够。但是如果要深入的去了解urllib2的其他操作,这个还满足不了我们。

5.贴吧为例的小爬虫

第一步我们要创建一个python文件,tieba_spider.py

然后输入百度贴吧的一个地址,比如:

LOL吧的第一页:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0

上面这个是第一页lol吧的url,我们继续打开第二页第三页。

https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50
https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100

这里可以发现规律了,贴吧中每个页面的不一样,url出来最后的pb值剩下的都是一样的,我们就可以找到这个规律,写一个简单的小程序,来爬取lol吧的所有网页。

之前我们已经写出了一个爬取一个网页的代码。现在我们把它封装成一个小函数load_page让我们可以使用:

在这里插入图片描述
下一步,我们就要写一个百度贴吧爬虫的接口,我们需要传递3个参数给这个接口,其中一个是我们要爬取的url地址,和要爬取的页码范围。

在这里插入图片描述
最后如果我们希望将爬取到的每页的信息存储在本地磁盘上,我们可以简单的写一个存储文件的接口。

在这里插入图片描述
下面就是写一个main函数,然后提示用户输入就可以爬取百度贴吧的url。

注意!百度贴吧最后页面是"pn=???"这里面的???是要传入的页面参数,所以我们再提供的时候不能包括???

在这里插入图片描述
综上所述,完整代码如下:

在这里插入图片描述
在这里插入图片描述
好了,下面来测试一下小爬虫:

输入lol吧的url地址:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=

这里我们不要添加=后面的数字,因为要自动添加:

在这里插入图片描述
最后会发现当前路径下的几个html页面,分别对应贴吧中对应的网页。这样一个简单的爬虫程序就搞定了。还有难一点的就是正则式和数量词的贪婪模式与非贪婪模式。等等…在这里就不一一说了。

这里为大家整理出了Python爬虫的学习资料,有非常适合初学者练习的项目,需要的话可以扫码领取,说不定能帮助到你学习Python呢!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Libra1313/article/details/125200250