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代码分析 ...
随机推荐
- 记录一道有意思的js题目
偶然机会,在codewars上面开始做题,遇到一道有意思的题目,记录一下: 题目是这样的: In this kata, you will write a function that returns t ...
- WebLogic12C安装配置文档
jdk版本:1.8; jdk安装路径不准有空格 JDK安装: jdk版本:1.8; jdk安装路径不准有空格 WebLogic安装: 解压安装包 解压JAR 找到fmw_12.2.1.3.0_wls\ ...
- Cassandra使用 —— 一个气象站的例子
使用场景: Cassandra非常适合存储时序类型的数据,本文我们使用一个气象站的例子(该气象站每分钟需要存储一条温度数据). 一.方案1:每个设备占用一行 这个方案的思路就是给每个数据源创建一行,比 ...
- Oracle用户自定义异常
注意:普通的查询语句不会出现异常,只有使用into对变量进行赋值的时候才会发生异常 --系统变量: notfound --> if sql%notfund then 如果这个表达式为真,则 (增 ...
- 获取JSO字符串的key和value值
import com.alibaba.fastjson.JSON; import java.util.ArrayList; import java.util.HashMap; import java. ...
- mysql1045问题解决
输入mysql -u root -P 1202 -h localhost -p时报错mysql1045 解决方法:my.ini中加上skip-grant-tables后重启mysql服务即可解决
- selenium中Xpath标签定位和cssSelectors定位(优先用cssSelectors)
二者的区别:xpath 支持角标定位,cssselector不支持 1.XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. xpath支持属性定位,无论是默认属性还是自定 ...
- Python3 学习笔记之 运算符
- python蟒蛇绘制
使用IDLE的文件方式编写代码并保存为PythonDraw.py文件 python蟒蛇绘制 import turtle引入了海龟绘图体系 使用setup函数,设定了一个宽650像素和高350像素的窗体 ...
- springboot的文件路径,配置文件
生成springboot会指定一个包路径,启动的class文件在这个目录下,其他的controller等也要在这个目录的子目录下,不然会扫不到. 一般我们会维护两三个配置文件:生产环境,开发环境,测试 ...