1.scrapy框架安装
我用的是pycharm所以直接在pycharm页面中的Terminal输入pip install scrapy 网站上一些大博主首先是下载了Twisted插件,嗯下载网址是:“https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted” (1) 进入页面搜索(Ctrl+f)twisted cp34表示Python3.4版本 win32表示32位操作系统
(2) 下载完成后进入终端(wind+r输入cmd回车或者用pycharm的Terminal),输入pip install Twisted-18.7.0-cp36-cp36m-win32.whl Twisted-18.7.0-cp36-cp36m-win32.whl:文件名(你下载哪个文件就输入哪个文件的文件名,要输入全部路径)
(3) 安装完成后再输入pip install scrapy,回车检测scrapy安装是否成功:在终端输入scrapy,出现以下内容就代表安装成功
2.创建一个scrapy爬虫项目
(1) 在Terminal输入scrapy startproject 项目文件夹名(你自己随便命名,就像我是作者我喜欢用pycharm里的Terminal,也可以用cmd) (2) 进入我们刚刚创建好的文件夹(cd 文件名,这里是cd test1) 进入到文件夹输入scrapy genspider example example.com,这第二个example 的意思是你要爬的那个网站的域名,第一个你随便命名,例如我要准备考四级了,但是对英语没有一点兴趣,我就去找英语热词然后我就去爬 英语点津于是创建了一个 scrapy genspider dj language.chinadaily.com.cn (language.chinadaily.com.cn是域名,example.com不一定要这种格式) (3) 按照路径你可以找到test1文件夹下面有个test1Python文件夹dj.py 文件就在spiders文件夹下面,划重点:dj.py文件就是我们要写的爬虫,是用来专门写爬虫的,pipelines.py 则是专门用来保存的 settings.py 则是用来伪装,接口代理等等,middlewares.py则是一些中间键设定暂时不用管。
(4) 由第三步我们可以知道我们主要编写的就是dj.py,pipelines.py,settings.py三个文件,下面开始搂代码
dj.py 初始: 首先我们需要更改start_urls也就是初始页面网址 所以将http://language.chinadaily.com.cn/更改为https://language.chinadaily.com.cn/news_hotwords/
然后我们需要在parse(self, response)函数里面写入我们需要爬取的规则,我这用的是xpath ‘./’的意思是在当前目录下 我们可以运行一下看下效果,这儿不能直接运行代码,要点击Terminal进入到当下的test1下输入scrapy crawl dj 然后你会发现不仅爬出了内容还爬出了许多不需要的,也不能说不需要,作为初学者来说只要自己需要的内容获取到了,就不需要其它的,我开始也是这样,学到到后面就会明白可以从这些信息里面看有没有报错,报错的是什么位置,这个怎么看暂时不说,因为一两句说不完。
那么我们该如何去掉这些不需要的呢?这时候,我们打开settings.py文件这里面的变量名都是用大写开头的 我们选中一行输入LOG_LEVEL = ‘WARNING’** 再在Terminal运行scrapy crawl dj
3.加载下一页下下页的内容
1.首先分析目标页面的页面规律,大致规律都相同,像tb则是页面数44,回到我们这个目标网站 由此我们可以得出来url的规律**‘https://language.chinadaily.com.cn/news_hotwords/page_{}.html’.format(i)*** # i是自己定义的当i=1时得到的和初始页面的内容是一样的,我们知道了最后一页的页码,因此可以用range循环从1到230(注意!python默认从0开始)。
问题来了 怎么把url参数传入到parse()函数里面去并执行?这时候我也不行了只能去找官方文档,不找不知道一找,直接把我看懵了,这里我帮你们简化了就是咱们***scrapy.Request()函数***我们大致常用的参数就三分别是:url,callback,meta 其中meta作为传参主要是获取链接详细内容,例如:我想获得我爬到第一条热词的详细信息,这里先不说,怕等下越弄越复杂。 上代码
4.保存
1.首先打开settings.py 找到可以用Ctrl+F搜索将这三行的注释打开。 2.进入pipelines.py在函数里面写入文件保存
5.总结
1.scrapy startproject 文件夹名称 2.cd 文件夹名称 3.scrapy genspider 项目名 项目域 4.scrapy crawl 项目名
用英语点津这个网站来入门scrapy框架学习是最简单的,这个网站没有反爬,在实际生活中爬取信息我们不仅需要设置请求信息,还会涉及多线程,异步,爬取资源限制,代理等等,由于这篇文章的目的是引领需要的人进入scrapy框架的学习所以一些深一点的便不在这而展示,后续有时间会持续更新案例,有兴趣的可以相互讨论讨论。
|