Scrapy安装
- 如果用包管理例如pycharm和anaconda 直接安装
- 如果用pip 要用虚拟环境安装(lz没尝试过,建议小白慎选)
基本文件使用
lz用的pyhcarm 首先,spider的命令都需要在Terminal里面输入执行
- 创建与初始化:
$ scrapy startproject spider(name)
- 运行
$ scrapy runspider spider.py
- 遇到问题看网站
scrapy.org
基本函数
函数 start_requests 是程序入口,用于生成request对象 函数parse 是回调函数, 两个函数都是基本必须的。
class articleSpider(scrapy.Spider):
name = 'article'
def start_requests(self):
urls = [
]
return [scrapy.Request(url=url,callback=self.parse)
for url in urls]
def parse(self,response):
url = response.url
title = response.css('h1::text').extract_first()
print('URL is {}'.format(url))
print('Title is:{}'.format(title))
带规则的抓取
可以扩展crawlspider 类,代替start_requests, 来确定从哪里开始,哪些应该保留。 可以定义rules 列表,用正则表达式确定哪些URL应该保留
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class Spider01(CrawlSpider):
name = 'XXXX'
allowed_domains = ['']
start_urls = ['']
rules = [
Rule(LinkExtractor(allow='^(/XXXX/)((?!:).)*$'), callback='parse_items', follow=True),
]
def parse_items(self, response):
article = article()
article['url'] = response.url
article['title'] = response.css('h1::text').extract_first()
article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract()
lastUpdated = response.css('li#footer-info-lastmod::text').extract_first()
article['lastUpdated'] = lastUpdated.replace('This page was last edited on ', '')
return article
项目管理items
组织你爬取到了东西,在创建的spider文件中找到iterms.py 创建函数来确定数据的分类等等。
import scrapy
class article(scrapy.Item):
url = scrapy.Field()
title = scrapy.Field()
text = scrapy.Field()
lastUpdated = scrapy.Field()
管线组件
日志管理
|