爬取猫眼TOP100
学完正则的一个小例子就是爬取猫眼排行榜TOP100的所有电影信息
看一下网页结构:
可以看出要爬取的信息在<dd>标签和</dd>标签中间
正则表达式如下:
pattern=re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>'
+'(.*?)</a>.*?star">(.*?)</p>'
+'.*?releasetime">(.*?)</p>.*?integer">(.*?)'
+'</i>.*?fraction">(.*?)</i></p>.*?</dd>',
re.S)
源码如下:
import requests
import re
import time
import json def get_one_page(url):
headers={
'User-Agent': "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5"
}
response=requests.get(url,headers=headers)
if response.status_code==200:
return response.text
return None def parse_one_page(html): pattern=re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>'
+'(.*?)</a>.*?star">(.*?)</p>'
+'.*?releasetime">(.*?)</p>.*?integer">(.*?)'
+'</i>.*?fraction">(.*?)</i></p>.*?</dd>',
re.S) '''
pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
+ '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
+ '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
'''
items = re.findall(pattern, html)
for item in items:
yield {
'排名':item[0],
'图片':item[1],
'名字':item[2].strip(),
'演员':item[3].strip()[3:]if len(item[3])>3 else '',
'时间':item[4].strip()[5:]if len(item[4])>5 else '',
'评分':item[5].strip()+item[6].strip()
} def write_to_file(content):
with open('movie.txt','a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False)+'\n') def main(offset):
url='https://maoyan.com/board/4?offset='+str(offset)
html=get_one_page(url)
#print(html)
for item in parse_one_page(html):
print(item)
#write_to_file(item) if __name__ == '__main__':
for i in range(10):
main(offset=i*10)
time.sleep(1)
在弄这个的时候,自己先写了一遍正则,,不过只能爬取每一页的第一条数据,然后就没有下文了,,百思不得解
然后仔细的和书上的正则匹配,才发现有的地方写错了,通过这个例子,我们可以知道,正则表达式真的麻烦。。。。
也好难写。
运行结果:
最后还将数据保存在本地,,
GitHub地址:https://github.com/tyutltf/maoyan
爬取猫眼TOP100的更多相关文章
- Python 爬取 猫眼 top100 电影例子
一个Python 爬取猫眼top100的小栗子 import json import requests import re from multiprocessing import Pool #//进程 ...
- python爬虫:爬取猫眼TOP100榜的100部高分经典电影
1.问题描述: 爬取猫眼TOP100榜的100部高分经典电影,并将数据存储到CSV文件中 2.思路分析: (1)目标网址:http://maoyan.com/board/4 (2)代码结构: (3) ...
- 使用Beautiful Soup爬取猫眼TOP100的电影信息
使用Beautiful Soup爬取猫眼TOP100的电影信息,将排名.图片.电影名称.演员.时间.评分等信息,提取的结果以文件形式保存下来. import time import json impo ...
- 7.5爬取猫眼Top100电影名单
2018-7-5 20:22:57 还有有一丢丢成就感!以后可以爬取简单网站了!比如妹子图片,只是现在不知道咋下载! 正则还是刚看,要多去用正则!正则很强大的东西! #!/usr/bin/env py ...
- 整理requests和正则表达式爬取猫眼Top100中遇到的问题及解决方案
最近看崔庆才老师的爬虫课程,第一个实战课程是requests和正则表达式爬取猫眼电影Top100榜单.虽然理解崔老师每一步代码的实现过程,但自己敲代码的时候还是遇到了不少问题: 问题1:获取respo ...
- 【爬虫】-爬取猫眼TOP100
原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...
- Python爬取猫眼top100排行榜数据【含多线程】
# -*- coding: utf-8 -*- import requests from multiprocessing import Pool from requests.exceptions im ...
- 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片
需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法(5)根据图片url链接下载图片并保存(6)MongoD ...
- 爬取猫眼电影TOP100
本文所讲的爬虫项目实战属于基础.入门级别,使用的是Python3.5实现的. 本项目基本目标:在猫眼电影中把top100的电影名,排名,海报,主演,上映时间,评分等爬取下来 爬虫原理和步骤 爬虫,就是 ...
随机推荐
- LeetCode-Maximal Rectangle[code]
code: #include <iostream> #include <vector> #include <stack> #include <algorith ...
- 使用POI解析Excel时,出现org.xml.sax.SAXParseException: duplicate attribute 'o:relid'的解决办法
1.使用org.apache.poi解析excle,.xlsx类型文件InputStream is = new FileInputStream(strFileName);XSSFWorkbook wb ...
- C#调用Excel VBA宏[转载]
原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有E ...
- ACM HDU 1755 -- A Number Puzzle
A Number Puzzle Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- mysql多实例mysqld_multi方式
mysql多实例应用,亲测直接执行脚本可使用,可快速部署多实例环境 #!/bin/bash set -e #定义mysql_multi多实例数据的配置,如需增加,在后面函数对应地方需要增加 mydir ...
- January 16 2017 Week 3 Monday
In love, folly is always sweet. 恋爱中,干傻事总是让人感到十分美妙. Love can easily get us in over our heads, so it i ...
- 对于view的深入理解,续篇(一)重写ViewGroup的onDraw
在上一篇文章中,不仅熟悉了动态设定布局的方法,而且也对view的绘制流程有所了解.于是我继续做了下面几个实验,发现了一个问题.如果对view的绘制流程不是很明白,可以看看我的上一篇文章的介绍,点击下面 ...
- 使用appium在android9.0真机上测试程序时报错command failed shell “ps ‘uiautomator’”的解决办法
appium目前最新的windows版本是1.4.16,在android9.0真机上测试程序时会报错:command failed shell “ps ‘uiautomator’”. 网上大多数人的解 ...
- MATLAB 中gcf、gca 以及gco 的区别
MATLAB 中gcf.gca 以及gco 的区别gcf 返回当前Figure 对象的句柄值gca 返回当前axes 对象的句柄值gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意 ...
- php面试重要知识点,面试题
1.什么是引用变量,用什么符号定义引用变量? 概念:用不同的名称引用同一个变量的内容:用&符号定义. 例如: $a = range(0,100); $b = &$a; $b = ran ...