scrapy分页抓取网页(scrapy分页抓取网页的前后几页面,如何转化为json字符串)

优采云 发布时间: 2021-09-11 09:06

  scrapy分页抓取网页(scrapy分页抓取网页的前后几页面,如何转化为json字符串)

  scrapy分页抓取网页的前后几页面,一般由反爬虫爬虫完成。看一下我们可以使用的相关工具吧,爬虫服务器:redis(django内置)。我们在使用tornado-redis的时候,会绑定一个model,用于给redis中同步下载的页面,爬虫发现下载的数据,需要与redis中的设置的参数进行对应,比如这里的spider_name,就是存储页面的url等信息。

  现在来给redis里面的每个data一个名字。一个页面抓取一个spider_name值,你也可以放在redis_pool.txt的set中,redis_pool.pool里面总共可以指定三个spider_name。你不需要一次性从redis中读取所有的数据,这样可以保证高并发爬取模式下抓取的数据是有序的。

  最终你需要保存到redis中的文件名下。抓取下来的数据会放到redis_template.txt中,需要注意,不可以直接复制redis_template.txt。要把它序列化成json,可以通过tornado.tornado.interface.message类来实现,其中的message.content需要使用must_decode()方法来转化为json字符串。

  以下部分重点来了。1.给每个spider_name,都绑定一个主类,例如反爬虫服务器:spider:redis-template.txt每个抓取的数据,最好都是做一个本地缓存文件,例如tmp,定期清除后续数据。2.redis和tornado是分别定义的。需要考虑一点,redis的端口是3306,这样我们很难受到爬虫程序的post请求,还有返回请求的时候,可能没有保存好数据的地址。

  这个时候,我们不需要编写一个httprequest类,不在乎是浏览器端还是爬虫服务器端,我们直接使用一个request类,返回http请求的url的url。假设本次抓取内容:人生第一句诗,然后我们每个spider_name绑定一个class,*敏*感*词*timeout,然后请求的url,依次是:class.method_of_expression(it,self,user.a,if,...)3.最终会返回redis_template.txt。

  找一下tornado文档,tornado架构与通用http网络api的入门介绍。你可以查看或者搭建自己的redis服务器,运行网页抓取的服务器。或者使用命令行ls命令,查看抓取到的内容,根据你的需要进行分析。我之前使用的是本地的http网络api(xxxx),使用global来设置每个spider的pagesize,比如我的tornado-redis.txt,查看到内容是这样的:我们的抓取文件一般放到tornado-redis.conf中,每个spider的通用http网络api文件(xxxx),来定义每个spider的实现类。

  这样,一个爬虫服务器,可以同时抓取很多爬虫,因为每个spider都带有一个pagesize。tornado-。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线