Coder Social home page Coder Social logo

hong_spider's Introduction

hong_spider

there is a spider in python3.5.1.

这里记录一些爬取遇到的问题,以及操作的说明:

1.错误匹配

例子:

背包内有尹学成工作证充电宝		匹配到了背包,而被当作有效匹配

原先目标是充电宝,且充电宝不被匹配词库包含,这条记录应该丢弃

2.关于config文件

在config.json中的,是关于每个站点的定制,暂时分了三个层次,有一层页面(单独一个json页,或者一个正常网页),所有信息都包含在那单独的一页中

二层页面,在一层页面中,存在很多的直接信息,那些信息都是我们需要的信息,所以为目标信息。但是有多个这样的页面,所以需要构造多个同级页面,不断去提起每个页面中的信息

三层页面,在每一层页面中,存在很多的link,而真正的详细信息(目标信息)在link页面中,我们需要构造多个一级页面,然后提取这些页面的所有link,最后在link页面中提取有效信息

3.关于命令

这里,每一个TemplateSpider都是一个独立的进程,除了spider的name(还有个别几个标注的域名之外),几乎代码都是一样的。

在config.json中稍作修改就能配置一个新的爬虫进程,具体步骤如下:
	
	1.拷贝TemplateSpider.py到一个新的TemplateSpider数字.py,然后更改spider中的name
	
	2.在config.json中添加同样name的定制文件,具体定制文件怎么写如下:
		
		I.Index_Url:是我们找到的url的真实地址,包括?后面的附带的参数,一般我们假定这个网页都是由一个类似pageno=数字,来决定多个同级页面,之后Max_Page:使用requests库,对Index_Url作一次请求,根据返回找到有效信息最大页面数目{先根据css selector找到最大页面的那一段文字,再用正则匹配出来最大数字}。
		
		之后就能通过Index_Url来构造多个同级页面了,供之后的信息提取
		
		II.之后的二级,就直接用xpath从每个一级页面中提取想要的信息即可;三级页面的话,中间可能提取到的link是一个相对链接,我在代码中写了一个简单的相对路径转化成绝对路径的func,构造出来绝对路径,最后就使用Xpath来提取页面详细信息即可
		
		III.一级json页面的提取,一般是一个json页面,然后有个start = 0和 limit = 数字,我们的Max_Page这时候的作用是找到limit的最大值,也就是这一页面有多少条记录,全部提取;普通页面的话,直接略去Max_Page,直接xpath提取
		
		IV.运行时的一些状态输出在log.txt文件中,没有做更详细的日志处理,只是一些简要的可能debug用的到的信息。
		
		V.如果没看到log.txt,或template.json,或filter.bloom文件,执行一次命令这些文件即会生成;
		
		Collector_SpiderPipeline模块是测试用模块,要将数据存入es中,只需要在CollectorSpider/settings.py中,将SQLPipeline前面的注释删除,就能启动SQLPipeline模块,一般生成的filter.bloom文件就别去管它了,它是保证增量爬取的前提。

4.使用

自定义了一个scrapy框架的命令,crawlall,意思是启动所有的爬虫,运行时只需要scrapy crawlall,即可启动所有的爬虫。

每个爬虫自定义的时间是10min,但是很多爬虫跑不到10min就会停了,比如大多数一级页面,数据量少。

每个爬虫定义的下载间隔是0.5s,为了防ban的简单策略,如果遇到更高等级的防ban,可以考虑使用ip池,增加downloadmiddler.py下载中间件即可.

hong_spider's People

Contributors

tingyunsay avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.