scrapy中使用LinkExtractor提取鏈接


le = LinkExtractor(restrict_css='ul.pager li.next')
links = le.extract_links(response)
 
使用LinkExtractor的過程:
  1. 導入LinkExtractor,它是在scrapy中linkextractors中
  2. 創建一個Linkextractor對象,使用一個或者多個構造器參數描述提取規則,這里傳遞給restrict_css參數一個CSS選擇器表達式。它描述了下一頁鏈接所在的區域(在li.next下)
  3. 調用LinkExtractor對象的extract_links方法傳入一個response對象,這個方法一句創建對象的時候描述的的提取規則,在這個response對象的頁面中提取鏈接,最終返回一個列表,其中的每一個元素都是個link對象,也就是提取到的鏈接
  4. 由於頁面中的下一頁鏈接只有一個,因此用links[0]獲取link對象,link對象的url屬性就是鏈接頁面的絕對url地址(無須在調用response.urljoin方法),用它構造request對象並再次提交

 

描述提取規則

  特殊情況:

    LinkExtractors構造器的所有的參數都是有默認值的,如果構造對象的時候不傳入任何參數,就會自動提取頁面中的所有的鏈接

  LinkExtractor構造器的各個參數:

    1. allow
      1. 正則表達式或者正則表達式列表,提取絕對url和正則表達式匹配的鏈接,如果為空就會提取所有的鏈接
    2. deny
      1. 正則表達式或者正則表達式列表,與allow相反,排除絕對url與正則表達式匹配的鏈接
    3. allow_domains
      1. 接受一個域名或者一個域名列表,提取到指定域的鏈接
    4. deny_domains
      1. 接受一個域名或者一個域名列表,與allow_domains相反,排除指定域名的鏈接
    5. restrict_xpaths
      1. 接收一個xpath表達式或者一個xpath表達式列表,提取xpath表達式中區域下的鏈接
    6. restrict_css
      1. 接受一個css選擇器或者css選擇器列表,提取css選擇器中指定區域下的鏈接
    7. tags
      1. 接受一個標簽(字符串)或者一個標簽列表,提取指定標簽內的鏈接
    8. attrs
      1. 接收一個屬性(字符串)或者一個屬性列表,提取指定區域內的鏈,默認是['href']
    9. process_value
      1. 接收一個形如func(value)的回調函數。如果傳遞了該函數,LinkExtractor將會調用這個回調函數對提取的每一個鏈接進行處理,回調函數正常情況下應該返回一個字符串(處理結果),想要拋棄所處理的連接的時候,返回None

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM