注册
登录
提问时间:2018/9/30 16:22:19    楼主:未知网友   阅读量:211

对于Python爬虫开发者来说,对scrapy框架不会陌生,它是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。这里有一些scrapy使用的小技巧,新手们不妨了解下:

一、scrapy的meta

scrapy的meta的作用是在执行scrapy.Request()函数时,把一些回调函数中需要的数据传进去,meta必须是一个字典,在下一个函数中可以使用response.meta访问。

二、Python中的json解析

爬虫离不了json的解析,很多传统网站中可能并不需要,但是很多新网站中都使用json进行数据传输,动态展现,所以json的解析对于爬虫是很重要的。

json有三个常用的函数,分别是load(),loads(),dumps():

1、json.loads():传入一个json字符串,返回一个字符串解析出来的list或dict;

2、json.load():这看起来和json.loads()很像,但其实不一样,这个函数的作用是从文件中读取json并解析成dict或list;

3、json.dumps():把一个dict或list转换成字符串,相当于json.loads()的逆向过程。

三、字符串处理函数

scrapy中常见的处理函数有两种:replace()和strip():

1、replace():字符串类型才用这个函数,传入两个参数,第一个是需要替换的字符串,第二个是替换成什么字符串,它会循环替换所有匹配到的字符串;

2、strip():去除左右两边的空字符。

四、正则表达式

Python中的正则表达式有两种使用方式:一种是通过re模块的compile()函数生成一个正则表达式对象,然后用这个对象去匹配字符串,这种方式调用函数时不需要传入正则表达式,当一个正则表达式需要重复多次使用时建议使用此方式,它会先编译正则表达式,然后再去匹配,速度想对较快;另一种方式是直接使用re模块的各个函数,第一个参数需要传入正则表达式,常用的函数有四个,分别是re.compile()、re.match()、re.search()和re.findall()。

1、re.compile():传入正则表达式字符串,推荐使用r''的这种原始字符串,不需要对一些特定字符转义,此函数返回一个正则表达式对象;

2、re.match():从字符串的开始处匹配,匹配到返回match对象;

3、re.search():从任意字符处开始匹配,匹配到就返回一个match对象;

4、re.findall():从任意字符处开始匹配,匹配到所有的结果,返回一个list。