爬虫的目标

爬取猫眼电影TOP100的电影名称,时间,评分,图片等信息

抓取分析

查看网页源代码,找到对应的目标信息,发现一部电影对应的源代码是一个dd节点

抓取首页

为了方便,这里先抓取第一页的内容,运行之后,可以查看到网页的源代码,之后需要对页面进行解析。

import requests

def get_one_page(url):

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

} #头信息,爬取一些网站时需要加上,否则可能会爬取失败

response = requests.get(url,headers=headers)

if (response.status_code==200):

return response.text #返回网页内容

return None

def main():

url = 'http://www.maoyan.com/board/4'

html = get_one_page(url)

print(html)

main()

正则匹配

正则表达式匹配对应的电影排名,图片,名称,内容,主演,发布时间,评分等7个内容

首先先看看正则匹配电影排名:

.?board-index.?>(.*?)

(.*?)是方便可以用group()得到所要的结果

下面贴出爬取以上7种的正则表达式(较复杂,在后续的文章中会改进,这里只做简单使用)

.?board-index.?>(.?).?data-src="(.?)".?name.?a.?>(.?).?star.?>(.?).?releasetime.?>(.?).?integer.?>(.?).?fraction.?>(.?).?

通过调用findall()方法提取所有内容,接下来,我们定义一个解析页面的方法parse_one_page(),代码如下

def parse_one_page(html):

pattern = re.compile('

.*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?a.*?>(.*?).*?star.*?>(.*?).*?releasetime.*?>(.*?).*?integer.*?>(.*?).*?fraction.*?>(.*?).*?',re.S)

items = re.findall(pattern,html)

print(items)

成功将一页的信息打印出来,以列表的形式,下面是输出结果:

将提取的匹配结果从列表转换成字典格式

def parse_one_page(html):

pattern = re.compile('

.*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?a.*?>(.*?).*?star.*?>(.*?).*?releasetime.*?>(.*?).*?integer.*?>(.*?).*?fraction.*?>(.*?).*?',re.S)

items = re.findall(pattern,html)

for item in items:

yield{

'index':item[0],

'image':item[1],

'title':item[2].strip(),

'actor':item[3].strip()[3:] if len(item[3])>3 else '',

'time':item[4].strip()[5:] if len(item[4])>5 else '',

'score':item[5].strip() + item[6].strip()

}

写入文件

dumps是将dict转化成str格式

content是一个字典类型的数据,一部电影的提取结果

ensure_ascii=False保证写入文件的是中文而不是Unicode编码

def write_to_file(content):

with open('result.txt','a',encoding='utf-8') as f:

print(type(json.dumps(content)))

f.write(json.dumps(content,ensure_ascii=False)+'\n')

分页爬取

if __name__=='__main__':

for i in range(10):

main(offset=i*10)

time.sleep(1)

本章总结

通过本次练习,加强掌握requests和re库的用法,这只是一个简单的爬虫实例,后续会继续更新更多的爬虫文章

ps:参考教程:Python3爬虫开发实战

源代码会在后续中上传至github

python 抢票代码 猫眼演出_Python爬虫-猫眼电影排行相关推荐

  1. python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补

    掐指一算,距离国庆黄金周还有半个月的时间!你出行的车票都抢到了吗? 图片来自 pexels 根据国务院办公厅发布的关于 2019 年部分节假日安排的通知,国庆放假安排是:10 月 1 日至 7 日. ...

  2. python抢票代码运行内存越来越大_50 个加速包都抢不到车票,还不如这个 Python 抢票神器...

    阅读文本大概需要 6.6 分钟. 又到了一年一度的抢票大战,本来就辛苦劳累了一年,想着可以早点订到票跟家里人团聚.所以有挺多的人,宁愿多花些钱去找黄牛买票.但今年各种抢票软件的横行,还有官方出的加速包 ...

  3. python抢票代码_教你用Python动刷新抢12306火车票,附源码!

    用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据 ...

  4. python抢票12306源码_Python突破12306最后一道防线,实现自动抢票(附源码)

    一年一度的春运又来了,今年我自己写了个抢票脚本.使用Python+Splinter自动刷新抢票,可以成功抢到.(依赖自己的网络环境太厉害,还有机器的好坏) Splinter是一个使用Python开发的 ...

  5. python抢票12306源码_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统效果图如下所示: 具体代码如下所示: import urllib.request as request import http.cookiejar as coo ...

  6. python抢票代码_五一要来了,教你用Python动刷新抢12306火车票,附源码

    用python另一个抢票神器,你get到了吗? 2020年时间飞逝,转眼间马上要到五一了,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据, 预示着今年春运回程和 ...

  7. python抢票代码_五一要来了,教你用Python自动抢火车票,附源码

    用python另一个抢票神器,你get到了吗? 2020年时间飞逝,转眼间马上要到五一了,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据, 预示着今年春运回程和 ...

  8. python抢票代码_如何使用python爬取抢票?

    有身在异乡的小伙伴们?相信绝大多数的小伙伴都曾有过离开过,或现在是,独在异乡的情况吧,拿小编来说,小编现在就是这种状况,回家次数不多,不是因为没有时间,而是因为没有车票,每次都需要拿抢票软件,于是,脑 ...

  9. python 抢票代码 猫眼演出_python爬虫实例-猫眼电影

    1.环境准备 python3.6 pycharm 安装requests库,pip install requests 2.XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath ...

最新文章

  1. 从字符串中提取BCD码,转换为UINT数据并返回
  2. 循环队列的java结构_java数据结构之循环队列(数组实现)
  3. 基于JAVA+SpringBoot+Mybatis+MYSQL的送水公司后台管理系统
  4. 从Retrofit的源码来看 HTTP
  5. 深信服环境SCSA环境遇到的问题(无法访问网站)
  6. spring定时器时间表达式
  7. 怎么用计算机弹电脑病毒音乐,怎么制作电脑病毒?简单电脑病毒制作方法
  8. mtk flashtools工具回读镜像文件system.img
  9. VSS 和VDS 交换机区别
  10. 全文检索技术Lucene
  11. ERROR 1820 (HY000): You must reset your password using ALTER USER statement
  12. 英国易捷航空遭黑客入侵 约900万客户数据被窃取
  13. 【web前端基础 | H5】HTML简介
  14. 2D 23.2.23
  15. 无聊的apache错误(.htaccess pcfg_openfile)
  16. WinSCP(5.11.2)绿色便携版,开源SCP/SFTP客户端
  17. 【进程线程】1. 概念和区别
  18. 红色警戒2:罗曼诺夫的复仇(openRA) Linux安装指南
  19. 易语言让按钮支持回车键操作
  20. Vmware上安装Vxworks 5.5

热门文章

  1. 创新触手可及: 为使用企业级 OSGi 做好准备了吗?
  2. MongoDB的Morphia框架
  3. html的文件头标志,各类文件的文件头标志.docx
  4. 北上深广领军,成都名列第五,武汉跌出前十,中国城市综合发展指标最新排名公布...
  5. mysql 循环_MySQL实现for循环逐个遍历
  6. 全网最全资源需要的看过来---分享是一种情怀
  7. docker-compose 部署prometheus+grafana+alertmanager+chronograf+prometheus-webhook-dingtalk+loki
  8. Spring如何自动注入一个接口多个实现实例
  9. 仿豆瓣(静态web布局)(全)
  10. 二清分账不解决,平台企业还能走多远?