当前位置: 首页 > news >正文

python爬虫练习--爬取猫眼热映口碑榜

#抓取猫眼热映口碑榜
import json
import requests
from requests.exceptions import RequestException
from lxml import etree
import time

#抓取首页
def get_one_page(url):
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

def parse_html(html):
    html = etree.HTML(html)
    result = html.xpath('//dl[@class="board-wrapper"]/dd')

    for line in result:
        id = line.xpath('i/text()')
        title = line.xpath('div/div/div/p/a/@title')
        actor = line.xpath('div/div/div/p[@class="star"]/text()')
        time = line.xpath('div/div/div/p[@class="releasetime"]/text()')
        for i in actor:
            actor = i.strip()

        yield {
                'id': id[0],
                'title': title[0],
                'actor': actor,
                'time': time[0][3:],

                    }

def write_to_file(content):
    with open('result.txt', 'a', encoding='utf-8') as f:
        f.write(json.dumps(content, ensure_ascii=False) + '\n')


def main():
    url = 'http://maoyan.com/board'
    html = get_one_page(url)
    for item in parse_html(html):
        print(item)
        write_to_file(item)
        time.sleep(1)


if __name__ == '__main__':
    main()
输出结果:
{'id': '1', 'title': '狂暴巨兽', 'actor': '主演:道恩·强森,娜奥米·哈里斯,杰弗里·迪恩·摩根', 'time': '间:2018-04-13'}
{'id': '2', 'title': '巴霍巴利王2:终结', 'actor': '主演:帕拉巴斯,拉纳·达格巴提,安努舒卡·谢蒂', 'time': '间:2018-05-04'}
{'id': '3', 'title': '超时空同居', 'actor': '主演:雷佳音,佟丽娅,徐峥', 'time': '间:2018-05-18'}
{'id': '4', 'title': '复仇者联盟3:无限战争', 'actor': '主演:小罗伯特·唐尼,克里斯·海姆斯沃斯,马克·鲁法洛', 'time': '间:2018-05-11'}
{'id': '5', 'title': '完美陌生人', 'actor': '主演:朱塞佩·巴蒂斯通,安娜·福列塔,马可·贾利尼', 'time': '间:2018-05-25'}
{'id': '6', 'title': '青年马克思', 'actor': '主演:奧古斯特·迪赫,史特凡·柯纳斯克,薇姬·克里普斯', 'time': '间:2018-05-05'}
{'id': '7', 'title': '昼颜', 'actor': '主演:上户彩,斋藤工,伊藤步', 'time': '间:2018-05-18'}
{'id': '8', 'title': '我是你妈', 'actor': '主演:闫妮,邹元清,吴若甫', 'time': '间:2018-05-11'}
{'id': '9', 'title': '西小河的夏天', 'actor': '主演:张颂文,谭卓,顾宝明', 'time': '间:2018-05-25'}
{'id': '10', 'title': '哆啦A梦:大雄的金银岛', 'actor': '主演:水田山葵,大原惠美,嘉数由美', 'time': '间:2018-06-01'}

 参考链接:https://www.jianshu.com/p/7041a7ba7fe0

转载于:https://www.cnblogs.com/watchslowly/p/9134200.html

相关文章:

  • Python字符串capitalize center 方法
  • 实验四 shell编程2
  • 接口只用于定义类型(19)
  • 洛谷 P2421 [NOI2002]荒岛野人
  • python第五天学习总结
  • Nginx配置详解
  • ngnix-内网能用,外网不能用
  • 从一到无穷大:科学中的事实和臆测 (G. 伽莫夫 著)
  • java nio和bio
  • redis(一)
  • [Web 前端] 你不知道的 React Router 4
  • 斗地主AI算法——第四章の权值定义
  • PicGo的star数破1000的心路历程
  • Kotlin基础五
  • 转:少走弯路,给Java 1~5 年程序员的建议
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CSS相对定位
  • DataBase in Android
  • django开发-定时任务的使用
  • Laravel 中的一个后期静态绑定
  • 力扣(LeetCode)21
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 我的业余项目总结
  • 仓管云——企业云erp功能有哪些?
  • 进程与线程(三)——进程/线程间通信
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​ArcGIS Pro 如何批量删除字段
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (c语言)strcpy函数用法
  • (多级缓存)多级缓存
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (一)u-boot-nand.bin的下载
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)Linux 多线程条件变量同步
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • [.NET]桃源网络硬盘 v7.4
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [<事务专题>]
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——