在正式爬虫之前还有一些入门需要了解的知识点,以下是我入门时看的一点东西:
- Python爬虫入门一之综述
- Python爬虫入门二之爬虫基础了解
- Python爬虫入门三之Urllib库的基本使用
- Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门五之URLError异常处理
- Python爬虫入门六之Cookie的使用
- Python爬虫入门七之正则表达式
- Python爬虫入门八之Beautiful Soup的用法
(转载自:http://cuiqingcai.com/1052.html)
首先来张图:
这是最简单的爬虫了,就是给一个网址,然后从他的内容中利用正则或者bs4找出它的规律,最终将需要的东西提取出来。找需要的内容和内容所在位置的规律这就是自己需要根据网页源码来总结的了。
虽然在一个页面中就有自己需要的所有内容了,但是这样也有差别:
- 一种是向服务器直接提交一个网址后,服务器将所有要显示的内容一次性都给发过来;
- 另一种就是利用ajax技术,并不是一次将所有内容都给用户返回而是在页面中有一个加载更多的按钮,如果用户想要看到更多的内容的话,通过点击按钮然后浏览器在发送新的内容的url请求。利用这种技术:可以在不重新加载整个页面的情况下,为页面的某部分更新,更多ajax内容请自行搜索,我们这个网址也有这么一个按钮,如下
但是此爬虫不是利用了ajax技术,只是利用了JavaScript技术,将一部分内容隐藏了起来,你点击显示全部影片的按钮后,会将隐藏起来的内容在给你显示出来而已,上边这张图片最后一个电影是《三城记》,而从下面可以看“显示全部影片”按钮的上面还有很多影片,所以这就证实了我上面所说的没有利用ajax技术,只是隐藏起来了而已。
下面开始正式爬虫:
这个爬虫总共分三个步骤
- 根据url取页面内容
- Bs4根据自己发现的规则来提取具体内容
- 根据电影的星级排序
首先获取网页内容
|
|
接下来用bs4来提取内容
|
|
这样所有class为list-item的li标签就都存储到list_li_films中了,因为这样的li标签不止一个,所以需要用一个for循环进去依次提取需要的信息,下面是一个li标签
|
|
其实我们需要获取的信息在li的属性里就都能拿到但是为了多介绍点bs4的用法,其中的两项:评分和星级就不从li中获取了,而是从下面包含其他部分中获取出来,具体代码如下:
|
|
我们定义了一个空的字典film_dic来追加存储获得的信息。可以看出获取评分和星级不是从li标签的属性中获取的,但也是利用bs4的find函数,而方式不同了。
正则和bs4是写python爬虫的必备知识。
通过字典的append,已经把页面中的所有信息都获取完了,现在还缺少最后一步就是按照评分排序一下,代码如下:
|
|
这些功能都是些在一个函数中,现在只需在main中调用即可:
|
|
pycharm的输出结果如下:
|
|
这个可以说应该是最基本的爬虫了,代码已上传github。
地址为:https://github.com/lowkeynic4/crawl/blob/master/doubandianying.py