Requests+正则表达式 爬取猫眼电影
代码:
import re
import json
from multiprocessing import Pool
import requests
from requests.exceptions import RequestException basic_url = 'http://maoyan.com/board/4?offset=%d'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36',
}
file = open("maoyan_movies.txt", 'a', encoding="utf-8") def get_page(url):
try:
response = requests.get(url, headers=headers)
if response.status_code == requests.codes.ok:
return response.text
else:
return None
except RequestException:
return None def parse_page(content):
pattern = re.compile(
'<dd>.*?board-index.*?>(\d+)</i>'
'.*?<img data-src="(.*?)"'
'.*?class="name"><a.*?>(.*?)</a>'
'.*?class="star">(.*?)</p>'
'.*?class="releasetime">(.*?)</p>'
'.*?class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i>'
'.*?</dd>', re.S)
items = pattern.findall(content)
for item in items:
yield {
'id': item[0],
'image': item[1],
'name': item[2].strip(),
'actor': item[3].strip()[3:],
'releasetime': item[4][5:],
'score': item[5] + item[6],
} def save_to_file(content):
json.dump(content, file, ensure_ascii=False)
file.write('\n') def get_page_movies(offset):
'''
获取一页的电影信息
offset用来构建完整的网页url,以10为最小单位
'''
step = 10
url = basic_url % (step * offset)
html = get_page(url)
for movie_info in parse_page(html):
save_to_file(movie_info) # 获取猫眼电影top100的电影信息: 排名,图片url,电影名,主演,上映日期,评分
def get_top_100_movies():
offset_list = [i for i in range(10)]
pool = Pool(processes=4)
pool.map(get_page_movies, offset_list)
pool.close()
pool.join() if __name__ == "__main__":
get_top_100_movies()
Requests+正则表达式 爬取猫眼电影的更多相关文章
- PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...
- Requests+正则表达式爬取猫眼电影
目标 提取出猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取站点的URL为http://maoyan.com/board/4,提取的结果以文本的形式保存下来. 准备工作 请安装好reque ...
- Requests+正则表达式爬取猫眼电影(TOP100榜)
猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...
- Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影
学习目的: 通过一个一个简单的爬虫应用,初窥门径. 正式步骤 Step1:流程框架 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果: 正则表达式分析:根据html ...
- python爬虫知识点总结(九)Requests+正则表达式爬取猫眼电影
一.爬取流程 二.代码演示 #-*- coding: UTF-8 -*- #_author:AlexCthon #mail:alexcthon@163.com #date:2018/8/3 impor ...
- Python爬虫实战之Requests+正则表达式爬取猫眼电影Top100
import requests from requests.exceptions import RequestException import re import json # from multip ...
- python爬虫从入门到放弃(九)之 Requests+正则表达式爬取猫眼电影TOP100
import requests from requests.exceptions import RequestException import re import json from multipro ...
- 14-Requests+正则表达式爬取猫眼电影
'''Requests+正则表达式爬取猫眼电影TOP100''''''流程框架:抓去单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果.正则表达式分析:根据HTML代码分析 ...
- Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)
requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...
随机推荐
- matlab数组和矩阵
数组创建 要创建每行包含四个元素的数组,请使用逗号 (,) 或空格分隔各元素. a = [1 2 3 4] a = 1×4 1 2 3 4 这种数组为行向量. 要创建包含多行的矩阵,请使用分号分隔各行 ...
- flask写入数据库
sqlalchemy是一个关系型数据库框架,它提供了高层的ORM 和底层的原生数据库的操作. sqlalchemy实际上是对数据库的抽象,通过python对象操作数据库,提高开发效率. 安装 flas ...
- 学号 20155219 《Java程序设计》第1周学习总结
学号 20155219 <Java程序设计>第1周学习总结 教材学习内容总结 JVM:是JAVA程序唯一认识的操作系统,其可执行文件为.class文档:具有让Java程序跨平台的功能.负责 ...
- weixin-java-mp集成微信公众号自带客服功能
电脑端登录公众号管理后台,[添加功能插件]开通客服功能,输入"人工客服"接入客服热线 底部有我的微信二维码,如有问题,可加好友进行技术交流! weixi ...
- java实现各种排序算法
java实现各种排序算法 import java.util.Arrays; public class SomeSort { public static void main(String[] args) ...
- JSM的topic和queue的区别
在JMS(Java消息服务)中,Topic实现publish和subscribe语义.一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber(电脑词汇中解释为“用户 ...
- UE4 IOS 开发之传感器输入
Iphone的传感器包括陀螺仪.加速计等. UE4提供了4个按键来收集这些传感器的3维数据.具体位置:ProjectSettings->Input. 其中Tilt数据可以反映Iphone目前的物 ...
- 【HDOJ1069】【动态规划】
http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java/Othe ...
- 线程---同步(synchronized)
实现线程同步的一种方式介绍: 思路: 首先,需要被协调的类,先实现线程,并重写run方法 然后,在被协调的类中私有化控制器,控制器实例化,由构造器带入. 其次,由控制器对象具体负责调用. 举例:循环输 ...
- 深入详解美团点评CAT跨语言服务监控(八)报表持久化
周期结束 我们从消息分发章节知道,RealtimeConsumer在初始化的时候,会启动一个线程,每隔1秒钟就去从判断是否需要开启或结束一个周期(Period),如下源码,如果 value < ...