scrapy Selector 入門

Python 網頁爬蟲

Thomas Laetsch

Data Scientist, NYU

建立 Selector

from scrapy import Selector
html = '''
<html>
  <body>
    <div class="hello datacamp">
      <p>Hello World!</p>
    </div>
    <p>Enjoy DataCamp!</p>
  </body>
</html>
'''
sel = Selector( text = html )
  • 使用包含 html 程式碼的字串建立 scrapy Selector 物件

  • 選擇器 sel 已選取整個 html 文件

Python 網頁爬蟲

選取多個 Selector

  • Selector 中用 xpath 取得特定 html 片段的新 Selector

  • 回傳為由多個 Selector 組成的 SelectorList

sel.xpath("//p")

# outputs the SelectorList: [<Selector xpath='//p' data='<p>Hello World!</p>'>, <Selector xpath='//p' data='<p>Enjoy DataCamp!</p>'>]
Python 網頁爬蟲

從 SelectorList 擷取資料

  • 使用 extract() 方法
>>> sel.xpath("//p")

out: [<Selector xpath='//p' data='<p>Hello World!</p>'>, <Selector xpath='//p' data='<p>Enjoy DataCamp!</p>'>]
>>> sel.xpath("//p").extract()

out: [ '<p>Hello World!</p>', '<p>Enjoy DataCamp!</p>' ]
  • 使用 extract_first() 取得清單中的第一個元素
>>> sel.xpath("//p").extract_first()

out: '<p>Hello World!</p>'
Python 網頁爬蟲

從 Selector 擷取資料

ps = sel.xpath('//p')

second_p = ps[1]
second_p.extract()

out: '<p>Enjoy DataCamp!</p>'
Python 網頁爬蟲

選這堂課!

Python 網頁爬蟲

Preparing Video For Download...