爬虫实战(一)猫眼电影基础数据爬取

看完爬虫基础,是不是有点心动手痒了呢?那么接下来就让我们一起学习如何爬虫吧。

写在爬虫之前

选这个题目的初衷:本人是一个学生党,经济来源较少但平时又特别爱看电影,又没时间关注电影票价的变动,有了这个爬虫之后,这将会极大的缓解我的苦恼。

爬取网页的说明:我们选择美团旗下的猫眼电影页面进行爬取,但不得不承认美团网站页面的反爬虫机制还是很厉害的。所以,我们将目标锁定在了它的客户端页面。

页面地址:http://m.maoyan.com/imeituan/

开始写代码

按照我们之前学的基础,我们可以大致的整理出如下代码:

import requests

res = requests.get('http://m.maoyan.com/imeituan/').text
print(res)

我们遇到了如下的错误:








猫眼访问控制



  

很抱歉,您的访问被禁止了

如果您认为我们出错了,请联系我们 [email protected]

这是什么意思呢,就是说我们写的代码太Low了,别人已经知道我们会用这样的方法爬取它的数据。好在我们还有些经验,试着将我们的爬虫伪装成一个浏览器,于是在get()方法里加入header参数,参数里面会包含浏览器的版本信息,如下所示。

import requests

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}
res = requests.get('http://m.maoyan.com/imeituan/',headers=header).text
print(res)

我们发现爬取成功了!页面部分结果如下所示:




  ...
  电影





查看全部

热映影片

...
...

这输出的结果对于我们来说是一个好消息,因为我们得到了电影的信息。但页面里却没有关于票价的信息,我们观察了一下页面数据,发现电影数据下面有每部电影的链接地址
"/imeituan/movie/341195?_v_=yes"。
经验告诉我们只需要如下地址:
"/imeituan/movie/341195"
确切的说完整的是如下地址:
"http://m.maoyan.com/imeituan/movie/341195"。
也就是说我们还要进行字符串的截取和拼接,如果忘了,请回顾一下我们之前学的python第7章字符串的内容。

import requests

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}
res = requests.get('http://m.maoyan.com/imeituan/movie/341195',headers=header).text
print(res)

上述代码是我们对电影“正义联盟”的页面进行的爬取测试,结果如下:

"D:\Program Files\Anaconda2\envs\py3\python.exe" C:/Users/SCALE/Desktop/bilibili-user-wen/test.py



  ...
  正义联盟
  



...


正义联盟

正义联盟

Justice League

... ...

8.6

(114171人评分)

动作,冒险,科幻 IMAX 3D

美国 / 120分钟

2017-11-17大陆上映

...
...

我们发现页面中,也是不存在票价信息的,那么这些信息是哪里来的呢?我只能告诉你这是动态加载的。如何实现动态数据的爬取呢,或许我们要留到下次再讲了。

你可能感兴趣的:(code实验室,爬虫开发)