import scrapy
class QuestionItem(scrapy.item.Item):
idx = scrapy.item.Field()
title = scrapy.item.Field()
class StackoverflowSpider(scrapy.spider.Spider):
name = 'SO'
start_urls = ['http://stackoverflow.com']
def parse(self, response):
sel = scrapy.selector.Selector(response)
questions = sel.css('#question-mini-list .question-summary')
for i, elem in enumerate(questions):
l = scrapy.contrib.loader.ItemLoader(QuestionItem(), elem)
l.add_value('idx', i)
l.add_xpath('title', ".//h3/a/text()")
yield l.load_item()
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider(scrapy.Spider):
# Your spider definition
pass
if __name__ == "__main__":
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(MySpider)
process.start() # the script will block here until the crawling is finished
您只需创建一个普通的Python脚本,然后使用Scrapy的命令行选项^{} ,它允许您运行一个spider,而不必创建一个项目。
例如,您可以创建一个文件
stackoverflow_spider.py
,其内容如下:然后,如果正确安装了scrapy,则可以使用以下命令运行它:
简单明了:)
检查一下official documentation。我会做一些改变,这样你就可以控制蜘蛛只在你做
python myscript.py
的时候运行,而不是每次你从它导入的时候运行。只需添加一个if __name__ == "__main__"
:现在将文件保存为
myscript.py
,并运行“python myscript.py”。享受吧!
幸运的是,scrapy源代码是开放的,因此您可以遵循crawl command的工作方式,并在代码中执行相同的操作:
相关问题 更多 >
编程相关推荐