用Python爬取猫眼上的top100评分电影

代码如下:

# 注意encoding = ‘utf-8‘和ensure_ascii = False,不写的话不能输出汉字
import requests
from requests.exceptions import RequestException
import re
import json
#from multiprocessing import Pool

# 测试了下 这里需要自己添加头部 否则得不到网页
headers = {
    ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36‘
}
# 得到html代码
def get_one_page(url):
    try:
        response = requests.get(url, headers = headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

# 解析html代码
def parse_one_page(html):
    pattern = re.compile(‘<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?">(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?(/dd)‘, re.S)
    items = re.findall(pattern, html)
    for item in items:
        # 将元组形式变为字典
        yield {
            ‘【排名】‘: item[0],
            ‘【图片】‘: item[1],
            ‘【标题】‘: item[2],
            ‘【主演】‘: item[3].strip()[3:],
            ‘【上映时间】‘: item[4].strip()[5:],
            ‘【评分】‘: item[5] + item[6]
        }

# 写入文件,写入的是一个json格式的数据
def write_to_file(content):
    with open(‘top100.csv‘, ‘a‘, encoding = ‘utf-8‘) as f:
        f.write(json.dumps(content, ensure_ascii = False) + ‘\n‘)
        f.close()

# 主函数
def main(offset):
    url = ‘http://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):
        main(i * 10)

# 多进程(测试有bug)
# if __name__ == ‘__main__‘:
#     pool = Pool()
#     pool.map(main, [i * 10 for i in range(10)])
#     pool.join()
#     pool.close()

  运行结果如下:

在top100.csv文件中的数据如下:

因为没有下载模块所以这里只是显示首页图片的链接,如果想下载首页图片还需再加上下载模块

原文地址:https://www.cnblogs.com/wuyepeng/p/10101180.html

时间: 2024-08-03 13:19:13

用Python爬取猫眼上的top100评分电影的相关文章

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文

python爬取猫眼电影top100排行榜

爬取猫眼电影TOP100(http://maoyan.com/board/4?offset=90)1). 爬取内容: 电影名称,主演, 上映时间,图片url地址保存到mariadb数据库中;2). 所有的图片保存到本地/mnt/maoyan/电影名.png 代码: import re import pymysql as mysql from urllib import request from urllib.request import urlopen u = 'root' p = 'root'

用Python爬取网页上的小说,让你从此告别书荒!

人生苦短,我用Python.有道爱看小说的小伙伴们,在看小说的期间总会遇到那么一段书荒期,在这段期间想看书却找不到,要么就是要VIP,要么就是下载不了.所以学会爬取网站上的小说是很有必要的,今天就以爬取笔趣阁小说为例,进行网页上小说的爬取.首先当我们打开笔趣阁的网页时,我们会看到很多的小说列表,如下图所示: ? 就拿爬取图上所示的小说来说,我们要进行以下的几个步骤: 爬取小说首先要构建请求表头: ? 然后我们的获取下载链接: ? 接下来我们进行文章内容的爬取: ? 最后我们将爬取来的小说写入到文

python爬取猫眼电影top100

最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/board/4?offset=0 我们发起请求,得到相应: 我们 我使用的是requests库,这是一个第三方的库. 2 利用正则解析爬取下的页面 当然你也可以使用xpath和bs4. 我们先看一下网页的源代码: 然后根据代码写出要匹配的正则,然后对匹配出来的数据做解析: 3 将抓到的数据写入本地文件

Python爬取猫眼top100排行榜数据【含多线程】

# -*- coding: utf-8 -*- import requests from multiprocessing import Pool from requests.exceptions import RequestException import re import json def get_one_page(url): """ 爬取每个页面 :param url: 爬取url地址 :return: 返回网页内容 """ try: re

python爬取猫眼电影的Top100

1 查看网页结构 (1)确定需要抓取的字段 电影名称 电影主演 电影上映时间 电影评分 (2) 分析页面结构 按住f12------->点击右上角(如下图2)---->鼠标点击需要观察的字段 (3)BeautifulSoup解析源代码并设置过滤属性 1 soup = BeautifulSoup(htmll, 'lxml') 2 Movie_name = soup.find_all('div',class_='movie-item-info') 3 Movie_Score1=soup.find_

利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息

一.分析网站内容 本次爬取网站为opgg,网址为:” http://www.op.gg/champion/statistics” ? 由网站界面可以看出,右侧有英雄的详细信息,以Garen为例,胜率为53.84%,选取率为16.99%,常用位置为上单 现对网页源代码进行分析(右键鼠标在菜单中即可找到查看网页源代码).通过查找“53.84%”快速定位Garen所在位置 由代码可看出,英雄名.胜率及选取率都在td标签中,而每一个英雄信息在一个tr标签中,td父标签为tr标签,tr父标签为tbody标

python爬取猫眼专业版-实时票房

& #!/usr/bin/env python #coding:utf-8 import requests def jsonresponse(url):     response = requests.get(url)     return response.json() #定义个映射表,页面信信息字段>含义 infomappingtable ={     "splitTotalBoxInfo":"今日实时(分账票房)信息",     "sp

分手后,小伙怒用Python爬取上万空姐照片,赢取校花选举大赛!

首先展示下Python爬取到的成果:   我做什么都要争第一,这次的校花投票选举大赛也不例外,虽然我是个男的......但是我看到了前女友竟然已经有三百多票排到第三名了,我怎么能眼睁睁的看着她优秀呢?我必须要让她排到前三除外,·不行,必须是前十开外!我想到一个办法就是用Python开发一个百度爬虫,爬取百度所有美女的照片,然后申请多个账号进行参赛.   其实比起Python爬取图片外,我对微信上的投票小程序也有所研究,已经有了Python实现微信上刷票脚本的思路,这个我下次再分享大家,这次先学习