利用Python3的requests和re库爬取猫眼电影笔记
以下笔记,作为参考借鉴,如有疑问可以联系我进行交流探讨!
代码思路很简单,简单概括为:
首先利用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库爬取猫眼电影笔记的更多相关文章
- 用requests库爬取猫眼电影Top100
这里需要注意一下,在爬取猫眼电影Top100时,网站设置了反爬虫机制,因此需要在requests库的get方法中添加headers,伪装成浏览器进行爬取 import requests from re ...
- 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜
之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...
- python学习(23)requests库爬取猫眼电影排行信息
本文介绍如何结合前面讲解的基本知识,采用requests,正则表达式,cookies结合起来,做一次实战,抓取猫眼电影排名信息. 用requests写一个基本的爬虫 排行信息大致如下图 网址链接为ht ...
- 利用python的requests和BeautifulSoup库爬取小说网站内容
1. 什么是Requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 它比urllib更加方便,可以节约 ...
- requests库爬取猫眼电影“最受期待榜”榜单 --网络爬虫
目标站点:https://maoyan.com/board/6 # coding:utf8 import requests, re, json from requests.exceptions imp ...
- PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...
- 爬虫基本库request使用—爬取猫眼电影信息
使用request库和正则表达式爬取猫眼电影信息. 1.爬取目标 猫眼电影TOP100的电影名称,时间,评分,等信息,将结果以文件存储. 2.准备工作 安装request库. 3.代码实现 impor ...
- Python3爬取猫眼电影信息
Python3爬取猫眼电影信息 import json import requests from requests.exceptions import RequestException import ...
- 爬虫--requests爬取猫眼电影排行榜
'''目标:使用requests分页爬取猫眼电影中榜单栏目中TOP100榜的所有电影信息,并将信息写入文件URL地址:http://maoyan.com/board/4 其中参数offset表示其实条 ...
随机推荐
- Influx Sql系列教程四:series/point/tag/field
influxdb中的一条记录point,主要可以分为三类,必须存在的time(时间),string类型的tag,以及其他成员field:而series则是一个measurement中保存策略和tag集 ...
- Spring的日志管理
一.spring的日志依赖 Logging是spring中唯一强制的外部依赖,spring中默认使用的日志是commons-logging,简称JCL,这里说的强制性,是因为在spring-core这 ...
- java email发送(附件中文的处理)
这里使用的是commons-email-1.3.2.jar进行的开发,自认为这是简单的邮件发送. package com.yt.base.common; import java.io.Unsuppor ...
- PMBOK(第六版) PMP备考知识总汇!
记录本人学习PMBOK第六版的学习笔记. 备考知识总汇! PMBOK序章 PMP备考指南之相关事项介绍 PMP备考指南之第一章:引论 PMP备考指南之第二章:项目运作环境 PMP备考指南之第三章:项目 ...
- c++ map容器使用及问题
C++ STL库map容器一些总结,欢迎大家指正补充. map容器由两部分组成,分别为关键字(Key)和值(Value),关键字和值都可以声明为任意类型的数据,注意:关键字唯一,不能重复!使用需包含头 ...
- tkinter学习笔记_02
4. 多行输入框 text # 按钮 # command 执行动作 def insert_point(): var = e.get() t.insert('insert', var) b = tk.B ...
- TCP协议(下)
TCP滑动窗口 发送端 LastByteAcked:第一部分和第二部分的分界线 LastByteSent:第二部分和第三部分的分界线 LastByteAcked + AdvertisedWindow: ...
- WPF 不要给 Window 类设置变换矩阵(应用篇)
原文:WPF 不要给 Window 类设置变换矩阵(应用篇) WPF 的 Window 类是不允许设置变换矩阵的.不过,总会有小伙伴为了能够设置一下试图绕过一些验证机制. 不要试图绕过,因为你会遇到更 ...
- oracel 查询语句
1.以左边为显示表,从其他表查询关联的数据(多表查询) select a.*,b.name from da as a left join db as b on a.id = b.pid left jo ...
- python day6 装饰器补充,正则表达式
目录 python day 6 1. 装饰器decorator 2. 正则表达式re 2.1 正则表达式概述 2.2 re模块常用方法 python day 6 2019/10/09 学习资料来自老男 ...