requests和正则表达式爬取猫眼电影Top100练习
1 import requests
2 import re
3 from multiprocessing import Pool
4 from requests.exceptions import RequestException
5 import json
6 import time
7
8
9 # 抓取单页内容
10 def get_one_page(url):
11 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
12 "Chrome/85.0.4183.121 Safari/537.36"}
13 try:
14 response = requests.get(url, headers=headers)
15 if response.status_code == 200:
16 return response.text
17 else:
18 return None
19 except RequestException:
20 return None
21
22
23 # 解析单页内容
24 def parser_one_page(html):
25 pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>'
26 + '.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>'
27 + '.*?</dd>', re.S)
28 contents = re.findall(pattern, html)
29 for content in contents:
30 yield { # 生成一个generator,对区域内的内容进行迭代处理
31 'index': content[0],
32 'image': content[1],
33 'name': content[2].strip(),
34 'actor': content[3].strip()[3:],
35 'time': content[4][5:],
36 'score': content[5]+content[6]
37 }
38
39
40 # 将单页内容写入文件
41 def write_to_file(content):
42 with open('猫眼电影.txt', 'a', encoding='utf-8') as f:
43 f.write(json.dumps(content, ensure_ascii=False) + '\n')
44 f.close()
45
46
47 def main(offset):
48 url = 'http://maoyan.com/board/4?offset=' + str(offset)
49 html = get_one_page(url)
50 for item in parser_one_page(html):
51 write_to_file(item)
52
53 if __name__ == "__main__":
54 time1 = time.time()
55 for i in range(0, 100, 10):
56 main(i)
57 time2 = time.time()
58 pool = Pool() # 使用多进程提高爬取效率
59 pool.map(main, [i*10 for i in range(0, 10)])
60 time3 = time.time()
61 print(time2-time1) # for...in花费时间
62 print(time3-time2) # 多线程花费时间
运行时间如下:

补充对yield用法的理解:
相关博客文章:https://blog.csdn.net/qq_33472765/article/details/80839417
requests和正则表达式爬取猫眼电影Top100练习的更多相关文章
- Requests+BeautifulSoup+正则表达式爬取猫眼电影Top100(名称,演员,评分,封面,上映时间,简介)
# encoding:utf-8 from requests.exceptions import RequestException import requests import re import j ...
- python3.6 利用requests和正则表达式爬取猫眼电影TOP100
import requests from requests.exceptions import RequestException from multiprocessing import Pool im ...
- PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...
- 爬虫练习之正则表达式爬取猫眼电影Top100
#猫眼电影Top100import requests,re,timedef get_one_page(url): headers={ 'User-Agent':'Mozilla/5.0 (Window ...
- Requests+正则表达式爬取猫眼电影(TOP100榜)
猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...
- 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 ...
- 整理requests和正则表达式爬取猫眼Top100中遇到的问题及解决方案
最近看崔庆才老师的爬虫课程,第一个实战课程是requests和正则表达式爬取猫眼电影Top100榜单.虽然理解崔老师每一步代码的实现过程,但自己敲代码的时候还是遇到了不少问题: 问题1:获取respo ...
- 14-Requests+正则表达式爬取猫眼电影
'''Requests+正则表达式爬取猫眼电影TOP100''''''流程框架:抓去单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果.正则表达式分析:根据HTML代码分析 ...
随机推荐
- Mac 系统安装robot framework
1.安装Python3 版本 2.安装robotframework:pip3 install robotframework 3.安装Pypubsub:pip3 install Pypubsub 4.安 ...
- PHP - 读取EXCEL内容 存入数据库
<?php //设置请求头 header("Content-Type:text/html;charset=utf8"); header("Access-Contro ...
- Idea创建maven加载过慢解决方法
添加标签:archetypeCataloginternal问题解决!
- sublime Text 3安装 Sublime Package Control(这个可以用于安装各种插件)时显示默认安装的c盘内存不够的解决方案
首先先关闭st3 之后在安装的路径下创建Data文件夹,然后打开st3(sublime Text 3简写)CTRL+`打开命令行输入以下内容,直接回车,等待下载完成就可以了import urllib. ...
- 你懂RocketMQ 的架构原理吗?
前言 前面我们跟大家聊了聊什么是消息中间件,以及哪些场景使用哪些消息中间件更加合适. 我们了解到RocketMQ是java语言开发的,我们能更深入的阅读源码了解它的底层原理,而且它具有优秀的消息中间件 ...
- Pandoanload涅槃重生,小白羊重出江湖?
Pandoanload涅槃重生,小白羊重出江湖? 科技是把双刃剑,一方面能够砸烂愚昧和落后,另一方面也可能带给人类无尽的灾难. 原子物理理论的发展是的人类掌握了核能技术但是也带来了广岛和长崎的核灾难, ...
- Mybatis源码学习第六天(核心流程分析)之Executor分析(补充)
补充上一章没有讲解的三个Executor执行器; 还是贴一下之前的代码吧;我发现其实有些分析注释还是写在代码里面比较好,方便大家理解,之前是我的疏忽,不好意思 @Override public < ...
- zt:HttpUrlConnection使用详解
下文转载自:https://www.cnblogs.com/tenWood/p/8563617.html 一,HttpURLconnection的介绍 在Android开发中网络请求是最常用的操作之一 ...
- 配置Cassandra开机启动(CentOS 7)
配置环境:centOS 7 1. 编写开机启动脚本[root@cassandra-01 ~]# cd /etc/rc.d/init.d/[root@cassandra-01 init.d]# vi c ...
- Struts 2 漏洞专题 | S2-008
漏洞简介 为了防止攻击者在参数内调用任意方法,默认情况下将标志xwork.MethodAccessor.denyMethodExecution设置为true,并将SecurityMemberAcces ...