selector会创建对象之后就很容易上手了,而对象的一般格式都是: selector = Selector(text=text)
这是最基本的,还有复杂一点的对象,如response = HtmlResponse(url='http://x.0830114.net/',encoding='utf-8')
不过再复杂的对象用法都是一样的,如下面这个例子:(运用之前记得导入from scrapy.selector import Selector)
text = '''
<html>
<body>
<h1>Hello World</h1>
<h1>Hello Scrapy</h1>
<b>Heallo python</b>
<ul>
<li>C++</li>
<li>Java</li>
<li>Python</li>
</ul>
<body>
</html>
'''
只需要一句话,selector = Selector(text=text),就完成创建了。
这种用法对于熟悉xpath和css的我来说简直不要太简单。对我来说难点还是在创建对象,我不会创建复杂的对象。
这里说一些xpath的用法,xpath其实就是按简单的目录结构来爬取,比如xpath('div/p/a/text()')
基本上都是这么来操作,text意思是取出文本的信息。xpath中/表示从这个路径开始选取,//表示选取所有的路径
因为text会取出带有标签的文本,所有还需要用extract来进行二次提取,以便把复杂的文本变成简单易懂的文本。
xpath主要就是按照文本的结构来爬取信息,这些没什么难的,随便看下你电脑中硬盘的目录排序,你就能模仿出来了。
还有正则表达式这个我不会啊,确切的说我就会点皮毛,我只知道要使用正则表达式可以在后面加上.re_first('')就能使用了,
data = selector.xpath('.//ul/li/text()').re_first('H(.*?)d').re_first('\d+\.d+')
除了能用正则表达式筛选数字,我无话可说了。对了这个创建对象的方法在scrapy中基本上是没什么用的,因为scrapy会自动帮我们创建这个对象。
对,就在你不经意间它就通过类和函数在内部创建了这个对象。