运行Scrapy Crawler

时间:2017-02-12 06:14:30

标签: python scrapy

我是Python和Scrapy的新手,我在PyCharm中编写了一个爬虫程序如下:

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

但是,当我运行上面的代码时,屏幕上没有任何内容!我的代码出了什么问题?

3 个答案:

答案 0 :(得分:0)

您通常会使用scrapy crawl启动scrapy,它会为您启动所有内容并开始抓取。

看起来您的代码也没有正确缩进(parse内只有一行(如果它们都应该)。

答案 1 :(得分:0)

将代码放入文本文件中,将其命名为your_spider.py,并使用runspider命令运行蜘蛛:

scrapy runspider your_spider.py

答案 2 :(得分: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中运行和调试您的蜘蛛。