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 ...
随机推荐
- 8.String StringBuffer StringBuilder
http://www.cnblogs.com/xiohao/p/4271140.html
- 使用nodegrass简单封装http请求例子
1.项目中经常性的使用http发送请求处理数据.而大部分请求方式为get和post,于是对http请求进行封装,提供代码的利用率. 2.nodegress是nodejs的一个请求工具. 具体步骤及代码 ...
- ajax利用FormData异步文件提交
通常情况下,我们上传文件都会使用form表单来提交文件.但有时候,我们会有异步提交文件的需求,在这种情况下,我们就需要新建一个Formdata来提交文件,后台如果使用的是PHP的话可以使用$_FILE ...
- 使用Mifare卡加密数据 笔记
Mifare 是最常用的射频卡,具体介绍网上太多,我就不说了.,很多城市的最早的地铁公交卡都是用这种卡,后来被破解后都换成智能卡了. 但是由于技术成熟,使用方便,成本低,现在很多小区门禁卡,停车卡,食 ...
- c++ --> extern "C" {}详解
extern "C" {}详解 extern "C"的真实目的是实现类C和C++的混合编程.在C++源文件中的语句前面加上extern "C" ...
- C++迭代器的使用和操作总结
迭代器是一种检查容器内元素并遍历元素的数据类型.C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访 ...
- Android中文API (110) —— CursorTreeAdapter
前言 本章内容是android.widget.CursorTreeAdapter,版本为Android 3.0 r1,翻译来自"深夜未眠",欢迎访问它的博客:"http: ...
- C语言博客作业字符数组
一.PTA实验作业 7-12 IP地址转换 本题PTA提交列表 设计思路 3.代码截图 7-7删除字符串中的子串 本题PTA提交列表 设计思路 定义字符型数组s[81]储存主串,sub[81]储存子串 ...
- 201621123040《Java程序设计》第十四周学习总结
1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 显示所有数据库: show databases; 创建数据库: create database test; 删除数据 ...
- 2017-2018-1 1623 bug终结者 冲刺003
bug终结者 冲刺003 by 王旌含 今日任务:优化界面布局,提供图片素材 需求 app图标.主界面图.主界面中按钮图:选择关卡图.关卡按键图:游戏中的小人.箱子.地板.墙.目的地:方向按钮:重置按 ...