requests+正则表达式提取猫眼电影top100
#requests+正则表达式提取猫眼电影top100
import requests
import re
import json
from requests.exceptions import RequestException
from multiprocessing import Pool def get_one_page(url):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER'}
try:
response = requests.get(url,headers = headers)
if response.status_code == 200:
return response.text
else:
return None
except RequestException:
return None def parse_one_page(html):
pattern = re.compile(r'<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)
results = re.findall(pattern,html)#这一步生成的其实是由元组组成的列表,列表的每一个元素是元组,元组则有前面正则表达式提取的电影名称,地址,演员名,上映时间,排序,评分等,这个列表怎么用,是一个很重要的问题
for result in results:
yield{
'index':result[0],
'add':result[1],
'title':result[2],
'actor':result[3].strip(),
'time':result[4].strip(),
'score':result[5]+result[6] }#生成器,返回一个个由键值对组成的字典 def save_one_page(content):
with open('D://result.txt','a',encoding='utf-8') as f:#当重新打开的时候,由于文件是gbk编码的,默认用gbk去打开,而此时打开的是unicode,所以无法打开,解决的方法是改变目标文件的编码
f.write(json.dumps(content,ensure_ascii=False)+'\n')#这里表示用中文写入,即gbk,回到上一步
'''如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如xml,但更好的方法是序列化为json,因为,json表现出来就是一个字符串,可以被所有语言读取,
也可以方便地存储到磁盘或者通过网络传输,json不仅是标准格式,并且比xml还快,而且可以在web页面中读取,非常方便。
将Python对象序列化为json用json.dumps(obj),意为把对象倾倒进入json
将json转换成python用json.loads(obj)意为把json对象加载出来''' def main():
for i in range(10): url = 'http://maoyan.com/board/4'+'?offset='+str(i*10)
html = get_one_page(url)
results = parse_one_page(html)
for item in results:
print(item)
save_one_page(item) if __name__=='__main__':
main()
#多进程版
import requests
import re
import json
from requests.exceptions import RequestException
from multiprocessing import Pool def get_one_page(url):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER'}
try:
response = requests.get(url,headers = headers)
if response.status_code == 200:
return response.text
else:
return None
except RequestException:
return None def parse_one_page(html):
pattern = re.compile(r'<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)
results = re.findall(pattern,html)#这一步生成的其实是由元组组成的列表,列表的每一个元素是元组,元组则有前面正则表达式提取的电影名称,地址,演员名,上映时间,排序,评分等,这个列表怎么用,是一个很重要的问题
for result in results:
yield{
'index':result[0],
'add':result[1],
'title':result[2],
'actor':result[3].strip(),
'time':result[4].strip(),
'score':result[5]+result[6] }#生成器,返回一个个由键值对组成的字典 def save_one_page(content):
with open('D://result.txt','a',encoding='utf-8') as f:#当重新打开的时候,由于文件是gbk编码的,默认用gbk去打开,而此时打开的是unicode,所以无法打开,解决的方法是改变目标文件的编码
f.write(json.dumps(content,ensure_ascii=False)+'\n')#这里表示用中文写入,即gbk,回到上一步
'''如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如xml,但更好的方法是序列化为json,因为,json表现出来就是一个字符串,可以被所有语言读取,
也可以方便地存储到磁盘或者通过网络传输,json不仅是标准格式,并且比xml还快,而且可以在web页面中读取,非常方便。
将Python对象序列化为json用json.dumps(obj),意为把对象倾倒进入json
将json转换成python用json.loads(obj)意为把json对象加载出来''' def main(pagenum): url = 'http://maoyan.com/board/4?offset='+str(pagenum)
html = get_one_page(url)
results = parse_one_page(html)
for item in results:
print(item)
save_one_page(item) if __name__=='__main__':
pool = Pool()
pool.map(main,[x*10 for x in range(10)])
requests+正则表达式提取猫眼电影top100的更多相关文章
- 1.requests+正则表达式爬猫眼电影TOP100
import requests from requests.exceptions import RequestException def get_one_page(url):try: response ...
- requests + 正则表达式 获取 ‘猫眼电影top100’。
使用 进程池Pool 提高爬取数据的速度. 1 # !/usr/bin/python 2 # -*- coding:utf-8 -*- 3 import requests 4 from request ...
- 使用requests爬取猫眼电影TOP100榜单
Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用reque ...
- Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)
requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...
- PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...
- 用requests库爬取猫眼电影Top100
这里需要注意一下,在爬取猫眼电影Top100时,网站设置了反爬虫机制,因此需要在requests库的get方法中添加headers,伪装成浏览器进行爬取 import requests from re ...
- 爬虫练习之正则表达式爬取猫眼电影Top100
#猫眼电影Top100import requests,re,timedef get_one_page(url): headers={ 'User-Agent':'Mozilla/5.0 (Window ...
- Python爬虫项目--爬取猫眼电影Top100榜
本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, ...
- 【爬虫综合作业】猫眼电影TOP100分析
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 一.爬虫对象 猫眼电影TOP100排行榜 二.代码如下 im ...
随机推荐
- TCP和UDP协议的区别
TCP和UDP都是传输层的协议 UDP协议的特点: UDP协议是一种无连接的.不可靠的传输层协议(尽力而为的协议) 为什么说UDP是一种无连接.不可靠的协议呢?UDP协议在传输报文之前不需要在双方之间 ...
- YCSB测试HBase远程完全分布式集群
写在前面 本文只讲一个很简单的问题,YCSB对HBase集群的测试.虽然网上有很多介绍YCSB测试HBase的文章,但都是针对本地HBase伪分布式集群的.大家都知道,稍微正式一些的压测都会要求测试客 ...
- Java的LockSupport工具,Condition接口和ConditionObject
在之前我们文章(关于多线程编程基础和同步器),我们就接触到了LockSupport工具和Condition接口,之前使用LockSupport工具来唤醒阻塞的线程,使用Condition接口来实现线程 ...
- 使用.NET开发AutoCAD——C#/AutoCAD 2018/ObjectArx/二次开发入门(二)
1.开发环境配置: (1)安装AutoCAD2018: (2)安装VS2015: (3)安装ObjectARX 2018类库: (4)安装ObjectARX 2018 .NET开发向导(ObjectA ...
- 团队作业7——第二次项目冲刺(Beta版本12.06)
项目每个成员的进展.存在问题.接下来两天的安排. 已完成的内容:队员每个人提出对接下来需要做的事情的看法和意见,将需要做的任务更新到了leangoo中进行管理,产品完成了界面优化的设计,测试复现了之前 ...
- 学号:201621123032 《Java程序设计》第8周学习总结
1:本周学习总结 2:书面作业 2.1:ArrayList代码分析 2.1.1:解释ArrayList的contains源代码 Contains方法调用indexof方法,如果元素为null,则循环比 ...
- 201421123042 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 接口 Comparable Arrays.sort -has a Lambda表达式 1.2尝试使用思维导图将这些关键词组织起来 ...
- windows 10下通过python3.6成功搭建jupyter 服务器
最近通过python学习爬虫技术,发现一个工具jupyter notebook很不错,该工具明显优势通过浏览器可以输入多行python代码,支持在线运行以及运行结果保存功能,在线验证python小模块 ...
- 第三章 jQuery中的事件与动画
第三章jQuery中的事件与动画 一. jQuery中的事件 jQuery事件是对javaScript事件的封装. 1.基础事件 在javaScript中,常用的基础事件有鼠标事件.键盘事件.wind ...
- android 运行时异常捕获
1,将运行时异常捕获并存到手机SD卡上 可以直接使用logcat 命令Runtime.getRuntime().exec("logcat -f "+ file.getAbsolut ...