2017-02-12 56 views
0

我在Python和Scrapy非常新,我在寫PyCharm履帶如下:乳寧一Scrapy履帶

import scrapy 
from scrapy.spiders import Spider 
from scrapy.http import Request 
import re 

class TutsplusItem(scrapy.Item): 
    title = scrapy.Field() 



class MySpider(Spider): 
    name = "tutsplus" 
    allowed_domains = ["bbc.com"] 
    start_urls = ["http://www.bbc.com/"] 

    def parse(self, response): 
    links = response.xpath('//a/@href').extract() 

# We stored already crawled links in this list 
crawledLinks = [] 

for link in links: 
    # If it is a proper link and is not checked yet, yield it to the Spider 
    #if linkPattern.match(link) and not link in crawledLinks: 
    if not link in crawledLinks: 
    link = "http://www.bbc.com" + link 
    crawledLinks.append(link) 
    yield Request(link, self.parse) 

titles = response.xpath('//a[contains(@class, "media__link")]/text()').extract() 
for title in titles: 
    item = TutsplusItem() 
    item["title"] = title 
    print("Title is : %s" %title) 
    yield item 

然而,當我在上面的代碼運行時,屏幕上也沒有打印!我的代碼有什麼問題?

回答

0

你通常會開始scrapy使用scrapy crawl,這將掛鉤一切爲您,並開始爬行。

它也像你的代碼不正確縮進(只有一條線內parse時,他們都應該是)。

0

使用runspider命令將代碼放在一個文本文件,將其命名爲類似your_spider.py和運行蜘蛛:

scrapy runspider your_spider.py 
0

要運行一個蜘蛛從內部Pycharm您需要配置「運行/調試配置「正確。作爲獨立腳本運行your_spider.py不會導致任何結果。

正如@stranac scrapy crawl提到的是要走的路。隨着scrapy是一個二進制和crawl二進制文件的參數。

配置運行/調試

在主菜單中去: 運行>運行配置...

  • 找到你的virtualenv中的適當scrapy二進制並設置其絕對路徑如腳本。 這看起來應該是這樣的: /home/username/.virtualenvs/your_virtualenv_name/bin/scrapy
  • Scrapy參數建立二進制scrapy將執行參數。在你的情況下,你想開始你的蜘蛛。這應該是這樣的:

crawl your_spider_name例如, crawl tutsplus

  • 確保Python的intrepreter是一個在那裏你設置Scrapy,需要爲您的項目,包等。

  • 確保工作目錄是包含settings.py的目錄,它也生成Scrapy

從現在開始,您應該可以從Pycharm中運行和調試您的蜘蛛。