学python已经有一段时间了,今天突然心血来潮,写下这篇博客,希望大家能交流下(目测不会有人鸟我这个菜鸟的) 哈哈哈那权当自娱自乐喽。。。。。

使用的语言是python

对于爬取猫眼电影上的top100, 我采用的是python的第三方库requests和bs4.

分析:

入口url: http://maoyan.com/board/4?

首先提取第一页的电影名称,然后再提取所有页面的。

步骤:

一:提取第一页的电影名称

首先创建一个存储电影名称的文件夹和txt文件。

1 os.makedirs("D:\猫眼电影") #在D盘中创建一个标题为猫眼电影的文件夹
2 os.chdir("D:\猫眼电影")#切换到工作目录
3 f = open("Top100.txt",'w',encoding="utf-8")#创建一个txt文件,注意编码为utf-8

然乎对第一页进行调试操作(在此强烈要求用google chrome ,比百度好用些,F12进入调试界面),分析Html元素可得电影名称存储在class 叫做main 的div标签中,进一步观察在div标签下的a 标签内,分析到这儿就可以进行下一步操作了,上代码:

html = requests.get(url,headers = headers)#访问该url
    soup = BeautifulSoup(html.text,"lxml")#创建beautifulsoup 对象
    a_list = soup.find("div",class_ = "main").find_all("a")#用find函数找到a标签
    for a in a_list:
        name = a.get_text().strip()#直接提取出a标签内的文字内容,即是我们需要的
        f.write(name+"\n") #将电影名称写入txt文件中

 这样的话我们就将第一页的内容提取出来了。

 二:提取所有界面的电影名称

我们查了下整个页面内容一共有十页,而且每一页的url 中还存在着联系:

第一页:http://maoyan.com/board/4?offset=0

第二页:http://maoyan.com/board/4?offset=10

第三页:http://maoyan.com/board/4?offset=20

第四页:http://maoyan.com/board/4?offset=30    

下面的我就不用放了,规律出来了,那么第n 页应该是:http://maoyan.com/board/4?offset=10(n-1)

还有考虑到页面只有10页,即将提取第一页的代码重复10次即可(嘿嘿嘿),如果有不固定的页面,那么我们就得继续分析html中<span>标签了(这里面一般存储着页码的),这里就不说了。上代码:

for i in range(10): #想了个偷巧方法,直接将上述每一页的提取重复10即可
    new_url = url+"offset="+str(10*i) # 这就是所有需要访问的所有页面的url

 

 代码中的new_url就是所有的url 了,然后将其循环一下。

三:完整代码如下

访问的时候我们还需要设置下代理,免得访问次数过多被禁止进入该网站了(我貌似就被封了一次,不过一天后就没有问题了)

headers随便在网上找一个即可,还是有蛮多的,我用的是这一个。

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"}

 

 完整代码如下:

import requests
from bs4 import BeautifulSoup
import os

url = "http://maoyan.com/board/4?"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"}
os.makedirs("D:\猫眼电影") #在D盘中创建一个标题为猫眼电影的文件夹
os.chdir("D:\猫眼电影")#切换到工作目录
f = open("Top100.txt",'w',encoding="utf-8")#创建一个txt文件,注意编码为utf-8
for i in range(10): #想了个偷巧方法,直接将上述每一页的提取重复10即可
    new_url = url+"offset="+str(10*i) # 这就是所有需要访问的所有页面的url
    html = requests.get(url,headers = headers)#访问该url
    soup = BeautifulSoup(html.text,"lxml")#创建beautifulsoup 对象
    a_list = soup.find("div",class_ = "main").find_all("a")#用find函数找到a标签
    for a in a_list:
        name = a.get_text().strip()#直接提取出a标签内的文字内容,即是我们需要的
        f.write(name+"\n") #将电影名称写入txt文件中
f.close()

 

就这么点代码,就可以爬取猫眼电影top100的,还是蛮简单的。

 今天就先来个比较简单的吧,过一段看看有没有其他什么可以放到博客上,毕竟菜鸟一枚,哎。。。。。。

 

posted on 2018-08-15 12:51  python_badboy  阅读(230)  评论(0)    收藏  举报