「python」如何有效利用Scrapy框架建立网页爬虫看这篇就懂——第三篇
在「python」实用的Scrapy框架安装指南,开始你的第一个专案-第2篇文章,完成Scrapy框架的安装以及专案的建立后,接下来,就可以在其中开发网页爬虫,而在开发之前,又有哪些基本的观念需要知道?本文将一步一步带大家来进行了解,重点包含:
Scrapy网页爬虫建立方法
Scrapy网页爬虫结构
Scrapy网页爬虫执行方法
一、Scrapy网页爬虫建立方法
首先,回顾一下上一篇文章中,在建立Scrapy专案时,可以看到如下图的执行结果:
其中,提示了建立Scrapy网页爬虫的方法,也就是如下指令:
$ scrapy genspider 网页爬虫档案名称目标网站的网域名称
举例来说,本文想要建立一个Scrapy网页爬虫,来爬取INSIDE硬塞的网络趋势观察网站的AI相关新闻,这时候,就可以开启Scrapy专案,比照以上的指令来建立网页爬虫:
$ scrapy genspider inside www.inside.com.tw. inside . com
执行结果
成功建立Scrapy网页爬虫后,在专案中的spiders资料夹下,就可以看到多了一个inside.py档案,如下图:
二、Scrapy网页爬虫架构
开启spiders资料夹下的inside.py网页爬虫档案,可以看到Scrapy框架帮我们产生了以下的内容结构:
其中,包含了以下三个属性(Attribute)及一个方法(Method):
name属性:网页爬虫的名称,在专案中必须是唯一的。
allowed_domains属性:目标网站的网域名称清单。
start_urls属性:想要爬取的一至多个网页网址清单。
parse()方法:撰写网页爬虫程式逻辑的地方,特别注意此方法名称不得更改。
三、Scrapy网页爬虫执行方法
由于本文所要爬取的是INSIDE硬塞的网络趋势观察网站的AI相关新闻,所以在start_urls属性的地方,修改为AI新闻的网页网址,如下范例第7行:
接下来,就可以在parse()方法(Method)中,撰写网页爬虫的逻辑。而在开发之前,先来分析一下INSIDE硬塞的网路趋势观察网站的AI新闻网页,如下图:
在新闻标题的地方,点击右键,选择「检查」,可以看到HTML原始码如下图:
从上图可以看出来,利用
标签及它的「post_title」样式类别(class),就可以定位到新闻标题的元素。
回到Scrapy专案中的inside.py档案,在parse()方法(Method)的地方,利用Scrapy框架的定位元素语法,就可以来撰写网页爬虫,这部分将会在下一篇文章和大家进行分享,本文先以BeautifulSoup模组(Module)为例进行示范,如下范例:
首先,需引用bs4模组(Module),在第11行将Scrapy引擎(ENGINE)回应的结果进行解析,接着,爬取网页的所有新闻标题,并且透过回圈把取得的每个新闻标题印出来。
完成后,在执行这个Scrapy网页爬虫之前,需设定User-Agent(使用者代理),简单来说,就是浏览器的相关资讯,位于settings.py档案,如下范例:
#USER_AGENT = 'news_scraper (+http://www.yourdomain.com)'
预设是注解的状态,所以,将注解取消并且加上User-Agent(使用者代理),如下范例:
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'= 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
最后,就可以利用「scrapy crawl」指令,加上网页爬虫的名称inside,来执行Scrapy网页爬虫,如下范例:
$ scrapy crawl inside
执行结果
四、小结
本文分享了Scrapy网页爬虫的建立与执行方法,透过实作可以感受到Scrapy框架非常的强大,利用指令即可快速建立类别(Class)结构的网页爬虫样板,透过这样的物件导向结构,不但能提升未来的维护性,习惯BeautifulSoup语法的朋友,也可以无痛的快速入门。
对于想要利用Scrapy框架开发网页爬虫的朋友,希望本文能够对您有所帮助,有任何的想法都欢迎在底下留言和我分享
相关文章
- 【Python开发】网页爬取心得
- 【数学建模】“华为杯”高级神经网络Keras(Python代码实现)
- python一些开源特色库
- 第28天:Python 标准库之 sys 模块详解
- 推荐十个Python图像处理工具
- 学Python语言可以做什么?
- Python 爬取网页中JavaScript动态添加的内容(二)
- Python爬虫:scrapy利用splash爬取动态网页
- Sublime Text3配置SublimeREPL快捷键的方法(Python)
- selenium_webdriver(python)获取元素属性值,浏览器窗口控制、网页前进后退,title/url打印
- python实现模拟浏览器訪问网页
- Python多进程编程
- Python之HTML的解析(网页抓取一)
- 成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 机器学习深度学习高阶内容系列-Python实现凸优化求解器
- 第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码
- Python 保存爬行动物捕捉网页
- python多线程实现抓取网页
- python 使用selenium和webdriver.Chrome 自动化测试和自动化延迟抓取网页数据
- Python 编写 web 爬虫的5个网页爬虫活得更久的方法
- 神仙级python小白入门教程(保姆级),从零基础入门到精通,从看这篇开始!
- python多进程之间的通信:消息队列Queue