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會自動幫我們創建這個對象。
對,就在你不經意間它就通過類和函數在內部創建了這個對象。