以下笔记,作为参考借鉴,如有疑问可以联系我进行交流探讨!

代码思路很简单,简单概括为:
   首先利用requests的get方法获取页面的html文件,之后对得到的html文件进行相对应的正则处理,然后把爬取到的数据保存到本地。

# -*- coding: utf-8 -*-
"""
爬取的相关信息有:电影名次、电影名称、主演、上映时间、评分
 
"""
 
import re
import time
import requests
from multiprocessing import Pool
from http.cookiejar import CookieJar
from requests.exceptions import RequestException
 
#创建requests回话
s = requests.Session()
#对需要登录或者需要利用cookie登录的,可以使用CookieJar( )这个方法。
s.cookies = CookieJar()
 
#创建个头文件,里面的用户我习惯使用这个"Baiduspider+"。
header = {
    'user-agent': 'Baiduspider+',
}
 
#根据url获取HTML文件
def getHTML(url, code='utf-8'):
    try:
        response = s.get(url, headers=header)
        response.raise_for_status()
        response.encoding = code
        return response.text
    except RequestException:
        print('getHTML Error')
 
#对HTML进行正则表达式处理
def parseHTML(html):
    pattern = re.compile('.*?board-index-.*?">(.*?)</i>.*?class="name">.*?'
                         + '"boarditem-click".*?"{movieId:.*?}">+(.*?)</a>.*?class="star">'
                         + '(.*?)</p>.*?class="releasetime">(.*?)</p>.*?<p class="score">'
                         + '<i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', re.S)
 
 #需要把html字符串化,否则报错:TypeError: expected string or bytes-like object
    items = re.findall(pattern, str(html))
 
    for item in items:
        yield {
            '序号': item[0],
            '电影名': item[1],
            '主演': item[2].strip(),
            '上映时间': item[3],
            '评分': item[4] + item[5],
        }
 
#把数据保存到本地
def writePAGE(content):
    with open('result.txt', 'a' ) as f:
        f.write(str(content) + '\n')
        f.close()
 
#编写主函数
def main(page):
    url = 'https://maoyan.com/board/4?offset=' + str(page)
    html = getHTML(url)
    items = parseHTML(html)
 
    for item in items:
        print(item)
        writePAGE(item)
 
 
if __name__ == '__main__':
    start = time.time()
 
#多进程爬取
    pool = Pool()
    pool.map(main, [page * 10 for page in range(10)])
    pool.close()  # 关闭进程池,不接受新的进程
    pool.join()  # 主进程阻塞等待子进程的退出
 
    end = time.time()
#打印出最后运行的时间
    print('It spends %s s' % (end - start))

  

利用Python3的requests和re库爬取猫眼电影笔记的更多相关文章

  1. 用requests库爬取猫眼电影Top100

    这里需要注意一下,在爬取猫眼电影Top100时,网站设置了反爬虫机制,因此需要在requests库的get方法中添加headers,伪装成浏览器进行爬取 import requests from re ...

  2. 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜

    之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...

  3. python学习(23)requests库爬取猫眼电影排行信息

    本文介绍如何结合前面讲解的基本知识,采用requests,正则表达式,cookies结合起来,做一次实战,抓取猫眼电影排名信息. 用requests写一个基本的爬虫 排行信息大致如下图 网址链接为ht ...

  4. 利用python的requests和BeautifulSoup库爬取小说网站内容

    1. 什么是Requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 它比urllib更加方便,可以节约 ...

  5. requests库爬取猫眼电影“最受期待榜”榜单 --网络爬虫

    目标站点:https://maoyan.com/board/6 # coding:utf8 import requests, re, json from requests.exceptions imp ...

  6. PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)

    利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...

  7. 爬虫基本库request使用—爬取猫眼电影信息

    使用request库和正则表达式爬取猫眼电影信息. 1.爬取目标 猫眼电影TOP100的电影名称,时间,评分,等信息,将结果以文件存储. 2.准备工作 安装request库. 3.代码实现 impor ...

  8. Python3爬取猫眼电影信息

    Python3爬取猫眼电影信息 import json import requests from requests.exceptions import RequestException import ...

  9. 爬虫--requests爬取猫眼电影排行榜

    '''目标:使用requests分页爬取猫眼电影中榜单栏目中TOP100榜的所有电影信息,并将信息写入文件URL地址:http://maoyan.com/board/4 其中参数offset表示其实条 ...

随机推荐

  1. (CSDN迁移) 替换字符串中的空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public ...

  2. 客户端请求服务器端通信, Web 编程发展基础|乐字节

    乐字节的小伙伴们,好久不见,甚是想念啊! 前面我发布的文章算是把Java初级基础阶段讲完了,接下来小乐将会给大家接着讲Java中级阶段——Javaweb. 首先,我们要看看Javaweb阶段主要重点掌 ...

  3. IP通信学习心得02

    1.7层模型 2.OSI的应用 3.如何辨别.数清冲突域和广播域 1)首先,须知第一层不能隔离冲突域和广播域.例如集线器或者直接连PC 2)其次,第二层可以隔离冲突域,但不能隔离广播域.例如,二层交换 ...

  4. Apache Kafka + Spark Streaming Integration

    1.目标 为了构建实时应用程序,Apache Kafka  - Spark Streaming Integration是最佳组合.因此,在本文中,我们将详细了解Kafka中Spark Streamin ...

  5. git stash详解

        应用场景: 1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然 ...

  6. 11 IO流(八)——装饰器设计模式,Filter装饰流

    声明:本文部分图片及内容引用自:https://www.cnblogs.com/qiumingcheng/p/5219631.html java装饰器设计模式 举一个形象的例子,人可以说话,而扩音器可 ...

  7. 面试题:在一个文件中有 10G 个整数,乱序排列,要求找出中位数(内存限制为2G)

    假设整数为32bit,4个字节存储 这种题目,首先想到的是分而治之.将文件中数字分组.然后遍历文件中的数字,按分组进行计数.最后找到中位数所在的分组区间 1.如果10G个整数都为同一个,那么10G整数 ...

  8. 【软件设计师】CPU的功能和组成

    CPU的功能 CPU的组成

  9. quartz2.3.0(十)xml配置方式定义quartz定时任务

    1.新增pom依赖 除了按照<quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0>添加依赖之外,pom.xml里新增加依赖: <dependency> ...

  10. SpringBoot项目jar启动端口设置

    SpringBoot项目打包后,在target下生成的jar文件可以使用 Java - jar 直接启动,指定端口号配置 java -jar epjs-eureka.jar --server.port ...