(一)scrapy 与 requsts与beautifulsoup的区别是什么呢?
个人粗暴的认为:
1、scrapy最牛X,大框架,大工程,往里可以添加好多库,内置css和xpath selector,非常方便。
2、requests呢,爬取个妹子图啊,个性化定制的东西比较简洁。用xpath解析还得fromlxmlimporthtml。
3、bs4呢,纯python写的,有点慢。而且有点过时。(有可能是我还没用明白)
总结:
reqests,beautifulsoup都是库,Scrapy是框架
Scrapy中可以加入requests beautifulsoup
Scrapy基于twisted,异步的,一条线卡死了,另一条线继续运行。
(二)pipelines、settings、iterms都是干嘛用的?CSS和Xpath的区别是什么?
Item:保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。
spiders:爬虫模块,负责配置需要爬取的数据和爬取规则,以及解析结构化数据
pipelines:管道模块,处理spider模块分析好的结构化数据,如保存入库等
Selectors选择器:
Scrapy提取数据有自己的一套机制。它们被称作选择器(seletors),因为他们通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。
Xpath爬取属于树状结构,一层一层从上向下拨开。
Css只要抓住关键字,再先顶一下标签就可以提取出来。个人比较喜欢css提取方式,简单轻松直观。
(三)搭建scrapy的入口 start your url
首先在虚拟环境下进入你的文件夹,我的项目的名字是mm(这部是关键,一定不能忘记,不然不会成功)
cd mm
然后,虚拟环境下终端输入:
scrapy genspider jobbole blog.jobbole.com
(四)写一个自己的main.py文件,然后调用命令行
首先,终端虚拟环境下输入:
scrapy crawl jobbole
启动jobbole
然后,main.py编写代码
fromscrapy.cmdlineimportexecute
importsys
importos
sys.path.append(os.path.dirname(os.path.abspath(__file__)))# 自动的导入mm的路径,不会换台电脑就废了
execute(["scrapy","crawl","douban"])# 调用excute函数,传递数组进来
(五)调试程序之前,setting一定要配置一下。
不然robot协议会出现问题,srapy会默认读取每个网站的robot协议,爬虫会很快停掉的
(六)打断点,调试一下,看看是否导入成功
response=HtmlResponse 是200, 代表服务器返回正常。ok可以继续开展爬取工作了
接下来就该获取url的值,并保存在字段中了。