使用Requests爬取猫眼电影

     谈到爬虫大家可能对Requests库不会陌生,相比urllib库的话Requests库在处理网页认证和Cookies时更加方便,话不多少,下面让我通过爬取猫眼电影前100名排行榜实例来说明一下。

     首先我们打开猫眼电影排行版链接‘https://maoyan.com/board/4’界面效果如图所示,可以看到排行榜第一名是张国荣主演的“霸王别姬”,还有电影评分。

使用Requests爬取猫眼电影_第1张图片

     当我们把网页下拉到最下方时,此时我们点击第二页,我们可以看到链接地址为‘https://maoyan.com/board/4?offset=10’,当鼠标点击第3页时网页链接地址为‘https://maoyan.com/board/4?offset=20’,点击第10页时网页链接地址为‘https://maoyan.com/board/4?offset=90’。此时我们不难发现出规律,当我们选择查看第几页的时候,只是offset=“”里面的参数在变,那当我们爬取到第一页的时候,通过一个for循环就可以把1-10页的网页内容爬取下来。

     我们鼠标右击,然后选择“检查”查看网页代码:我们想要做的时爬取排行榜前100名的电影名称、排名、和图片地址,并把图片保存到本地。那么我们可以通过requests.get方法获取网页内容,然后通过正则表达式来匹配我们想要的内容。下面直接上代码:使用Requests爬取猫眼电影_第2张图片

 

 

import requests  #引入requests库
import re,json  #引入re和json模块


def  get_one_page(url): #定义一个方法来获取单个网页链接
    try:                             
        response = requests.get(url) #获取网页的text
        if response.status_code == 200 :  #通过状态码是否等于200判断是否请求成功,成功的话返回text内容,未请求成功的                     返回None值
            return response.text      
        else :
            return None
    except BaseException  :
        return  None


def parse_one_page(html):   #定义一个方法解析网页内容
    pattern = re.compile('
.*?board-index.*?>(\d+).*?data-src="(.*?)".*?name">(.*?).*?' ,re.S) #通过正则表达式匹配我们想要的内容, items = re.findall(pattern,html) print(items) #打印一下查看获取的内容是否匹配,此处上图一份: print(type(items)) #如图所示我们得到的是数据是个列表,列表里面又有元祖 for item in items: #遍历列表,使用yield生成器生成一个字典,'index'为排名,'title'为电影名称,'image'为电影图片链接地址 yield { 'index' : item[0], 'title': item[2], 'image': item[1] } title = item[2] contents = requests.get(item[1]).content #把图片保存到本地,根据自己情况建立文件夹,在这我保存到的是D盘下的python1文件夹下面。 with open(r'D:\python1\ ' + title + '.jpg','wb') as f: f.write(contents) def write_to_file(content): #把获取的内容保存下来 with open('result.txt','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False) + '\n') f.close() def run(offset): #定义run方法,运行整个程序 url = 'https://maoyan.com/board/4?offset=' + str(offset) html = get_one_page(url) for item in parse_one_page(html): #print(item) write_to_file(item) if __name__ == '__main__': for i in range(10): #通过range方法,生成offset的值,来获取猫眼排行榜1-10页的电影排名 run(i*9) 接下来啥也不说了上图给大家看:

result.txt中的内容

 

 

使用Requests爬取猫眼电影_第3张图片

python1的电影图片:

使用Requests爬取猫眼电影_第4张图片

大家有兴趣的可以看看,以后会不定期和大家分享我学到的python内容和知识,文中有不当之处还请指教!

你可能感兴趣的:(使用Requests爬取猫眼电影)