记一次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程序啊。
但问题出现了,我要爬取的网站需要翻墙啊。在网上搜了一下,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: 你问我找这么多电影干嘛?
这种需要快进看的电影,当然多多益善了。
记一次Python爬虫开发经历的更多相关文章
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...
- Python爬虫开发
1. 语法入门 Python教程 2. 爬虫学习系列教程 1)宁哥的小站 https://github.com/lining0806/PythonSpiderNotes 2)Python爬虫开发 3) ...
- Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|
Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...
- Python爬虫开发教程
正文 现在Python语言大火,在网络爬虫.人工智能.大数据等领域都有很好的应用.今天我向大家介绍一下Python爬虫的一些知识和常用类库的用法,希望能对大家有所帮助.其实爬虫这个概念很简单,基 ...
- Python爬虫开发【第1篇】【Scrapy框架】
Scrapy 框架介绍 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架. Srapy框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以 ...
- Python爬虫开发【第1篇】【Scrapy shell】
Scrapy Shell Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据 ...
- Python爬虫开发【第1篇】【Scrapy入门】
Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...
- Python爬虫开发【第1篇】【机器视觉及Tesseract】
ORC库概述 在读取和处理图像.图像相关的机器学习以及创建图像等任务中,Python 一直都是非常出色的语言.虽然有很多库可以进行图像处理,但在这里我们只重点介绍:Tesseract 1.Tesser ...
- Python爬虫开发【第1篇】【动态HTML、Selenium、PhantomJS】
JavaScript JavaScript 是网络上最常用也是支持者最多的客户端脚本语言.它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏. 我们可以在网页 ...
随机推荐
- spring中使用@Async注解进行异步处理
引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...
- js的alert抛出之后怎么让页面停止执行?
方法: 1.如果是form的submit提交,如果要停止,则返回false:如果提交,则返回true就行了. 2.如果是手工跳转的方式,则如果要停止,则不执行跳转代码:如果要提交,则执行跳转代码 示例 ...
- 51Nod 1305 Pairwise Sum and Divide | 思维 数学
Output 输出fun(A)的计算结果. Input示例 3 1 4 1 Output示例 4 first try: #include "bits/stdc++.h" using ...
- jQuery日历签到插件
插件比较简单,先来看DEMO吧,http://codepen.io/jonechen/pen/bZWdXq: CSS部分: *{margin:0;padding:0;font:14px/1.8 &qu ...
- Android蓝牙通信总结
这篇文章要达到的目标: 1.介绍在Android系统上实现蓝牙通信的过程中涉及到的概念. 2.在android系统上实现蓝牙通信的步骤. 3.在代码实现上的考虑. 4.例子代码实现(手持设备和蓝牙串口 ...
- [CodeChef - GERALD07 ] Chef and Graph Queries
Read problems statements in Mandarin Chineseand Russian. Problem Statement Chef has a undirected gra ...
- Html5学习1(Html属性、Html CSS:)
Html属性 1.Html要求使用小写属性. Html标题 1.确保将Html标题标签只用于标题.不要仅仅为了生成粗体或大号的文本而使用标题. 2.<hr>标签在Html页面中创建水平线, ...
- 【转载】Lua脚本语法说明(修订)
原文:http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html 挑出来几个 .逻辑运算 and, or, not 其中,and 和 or ...
- java map转json servlet response
1.手写一个map转json的类 1.1 调用方式 //给前端放回json数据 Map<String, Object> map = new HashMap<>(); map.p ...
- 爬虫--requests讲解
什么是requests? Requests是用Python语言编写,基于urllib,采用Apache2 Licensed 开源协议的HTTP库.它比urllib更加方便,可以节约我们大量的工作,完全 ...