• 记一次Python爬虫开发经历


    为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询。由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界面,看看他的tag是不是我需要的。太麻烦了。于是我想着做一个python爬虫。

    首先需求分析。

    流程如下:在网站的主界面获得每部电影的URL——》进入每部电影的介绍界面——》判断它的tag是否符合要求,如果符合返回这部电影的名字——》把满足条件的URL和电影名字保存为文件——》下一页

    很简单的一个需求,基本两个FOR循环解决问题。

    之前是做java的,Java也能做,但是一直听说python爬虫python爬虫,于是想着既然python简单,那么就用python来做吧。的确简单。

    首先安装好python,这不用多说。

    然后上知乎搜索一下 “python 爬虫”,大致看了几篇文章,推荐用 Requests 和Scrapy的比较多。Scrapy是个爬虫框架,我这么简单的需求要框架干嘛。就决定用requests了。

    pip install requests

    首先装好 requests,按照知乎上的教程,在python自带的编辑器上打出下面的代码:

    import requests
    response = requests.get('https://www.baidu.com/') context = response.text print(context)

     看到控制台上输出一串字符,颇有成就感。毕竟自己的第一个python程序啊。

    但问题出现了,我要爬取的网站需要FQ啊。在网上搜了一下,requests支持代理,于是又加了下面的代码:

    proxies = {
    	'https': 'https://127.0.0.1:1080',
    	'http': 'http://127.0.0.1:1080'
    }
    headers = {
    	'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
    }
    

     可以用, 但代码行数已经有点多了,我需要一个python编辑器,虽然我装有宇宙第一IDE,但我当时并不知道VS支持python的,毕竟我只用它来写.Net程序。于是上网搜一下,都推荐pycharm,好,就是你了。

    安装调试好pycharm,又按照网上的教程亦步亦趋的继续。

    又出现了个问题,谷歌一下说是缩进的问题(吐槽一下,我一整天,遇到的大部分问题都是缩进问题),我检查了一下,缩进没问题啊。把代码复制到NotePad++里检查一下,原来Pycharm会自动把tab制表符换为四个空格,由于我是用NotePad++和Pycharm混合编辑这个py文件的,导致里面的代码,缩进部分有的是[tab],有的是四个空格,操蛋,原来Python不支持tab和空格混用。于是改为用NotePad++编辑,使用Pycharm运行。

    很好,这个requests我至少会用他的get方法了,其他的我暂时还用不到,现在需要的是使用正则找到这些电影的URL。顺便在吃午饭的时候大致看了一下廖雪峰的Python教程,看了一下基本语法。

    网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

    我对正则也不是很了解,不过我现在只需要写一个能用的程序,于是使用最简单暴力的方式:取那个URL所在的那一整块,到时候用字符串截取的方式把多余的部分截取掉就行了。这样对正则表达式的要求就简单多了。

    遍历每个URL,再使用requests获取到网页内容,使用正则获取到网页内容中的tag部分,查找这些tag有没有自己需要的。

    这时我又遇见一个缩进问题,检查了半天,报错那一行格式没问题啊。又再检查整体代码,嘛,我一个try忘记写excep了,那么你报try的错误啊,报缩进错误干嘛。

    还有一次也是同样的缩进的问题,检查了半天,报错的那一行的确格式没问题啊,突然看到,我一个else: 没有写要处理的内容就直接跳出一个 if 代码块了,是不是这个导致的,把这个else: 删掉。问题解决。

    真坑。

    总体而言,python作为一门弱类型语言,还是挺容易上手的,我之前都没有接触过python,一天之内通过各种谷歌的方式竟然写了一个能用的脚本了。要是放在java或者C#,一天的时间可能还在忙活着装java环境,配置IDE,了解各个数据类型那些。

    但python的缩进的确是个大坑。

    python的运行速度真心慢。当然比我人工快多了,以后可以考虑多线程的情况。

    PS: 你问我找这么多电影干嘛?

    这种需要快进看的电影,当然多多益善了。

  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/contixue/p/9535534.html
Copyright © 2020-2023  润新知