我是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
但是,当我运行上面的代码时,屏幕上没有任何内容!我的代码出了什么问题?
答案 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
是二进制文件的参数。
配置运行/调试
在主菜单中转到: 运行>运行配置...
scrapy
将执行的参数。在你的情况下,你想开始你的蜘蛛。这应该是这样的: crawl your_spider_name
例如crawl tutsplus
确保 Python intrepreter 是您设置Scrapy
以及项目所需的其他软件包的那个。
确保工作目录是包含settings.py
的目录,该目录也由Scrapy
生成。
从现在开始,您应该可以在Pycharm中运行和调试您的蜘蛛。