您现在的位置:主页 > 六彩开奖结果直播现场 >

Python丨scrapy抓取 高考派大学数据

发布日期:2019-08-02 19:46   来源:未知   阅读:

  香港马会资枓大全2018,终于写到了 scrapy 爬虫框架了,这个框架可以说是python爬虫框架里面出镜率最高的一个了,我们接下来重点研究一下它的使用规则。

  mySpider/items.py 项目的目标文件,规范数据格式,用来定义解析对象对应的属性或字段。

  mySpider/pipelines.py 项目的管道文件,负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库)

  name = 这个是爬虫的名字,必须唯一,在不同的爬虫需要定义不同的名字

  start_urls =[] 爬取的URL元组/列表。爬虫从这里开始爬取数据,第一次爬取的页面就是从这里开始,其他的URL将会从这些起始的URL爬取的结果中生成

  parse(self,response) 解析网页的方法,每个初始URL完成下载后将调用,调用的时候传入每一个初始URL返回的Response对象作为唯一参数,主要作用 1、负责解析返回的网页数据,response.body 2、生成下一页的URL请求

  尴尬的事情发生了,竟然是一个POST请求,本打算实现一个GET的,这回代码量有点大了~

  scrapy 模式是GET请求的,如果我们需要修改成POST,那么需要重写Spider类的start_requests(self) 方法,并且不再调用start_urls里面的url了,所以,咱对代码进行一些修改。重写代码之后,注意下面这段代码

  我们在 def parse(self, response): 函数里面,输出一下网页内容,这个地方,需要用到1个知识点是

  运行该文件,记住在scrapy中的其他py文件中,运行是不会显示相应的结果的,每次测试的时候,都需要运行begin.py 当然,你可起一个其他的名字。

  运行起来,就在控制台打印数据了,测试方便,可以把上述代码中那个数字7,修改成2,有心人能看到我这个小文字

  pycharm在运行过程中,会在控制台打印很多红色的字,没事,那不是BUG

  一定要在红色的字中间找到黑色的字,黑色的字才是你打印出来的数据,如下,得到这样的内容,就成功一大半了。

  但是这个地方有个小坑,就是,你会发现返回的数据不一致,这个我测试了一下,是因为第一页的数据返回的不是JSON格式的,而是普通的网页,那么我们需要针对性处理一下,这个先不用管,我们把 items.py 进行完善

  使用yield返回数据,不要使用return。这样子parse就会被当做一个生成器。scarpy将parse生成的数据,逐一返回

  如果返回值是request则加入爬取队列,如果是item类型,则交给pipeline出来,其他类型报错

  到这里,如果想要数据准备的进入到 pipeline 中,你需要在 setting.py 中将配置开启

  好了,代码全部编写完毕,还是比较简单的吧,把上面的数字在修改成7,为啥是7,因为只能获取到前面150条数据

Power by DedeCms