【发布时间】:2015-08-13 07:15:45
【问题描述】:
这是我的蜘蛛类:
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.http.request import Request
from scrapy.crawler import CrawlerProcess
from scrapy.linkextractors.sgml import SgmlLinkExtractor
import csv
class StackItem(scrapy.Item):
job_role = scrapy.Field()
company = scrapy.Field()
location = scrapy.Field()
desc = scrapy.Field()
read_more = scrapy.Field()
class newJobSpider(CrawlSpider):
name = "newFlaskSpider"
allowed_domains = ["placementindia.com"]
start_urls = ["http://jobs.placementindia.com/lucknow"]
rules = (Rule (SgmlLinkExtractor(allow=('.*\?id1=.*',),restrict_xpaths=('//a[@class="prevNext next"]',))
, callback="parse_items", follow= True),)
def parse_items(self, response):
hxs = HtmlXPathSelector(response)
posts = hxs.select("//article[@class='classified']")
items = []
for post in posts:
item = StackItem()
item["job_role"] = post.select("div[@class='uu mb2px']/a/strong/text()").extract()
item["company"] = post.select("p[1]/text()").extract()
item["location"] = post.select("p[@class='mb5px b red']/text()").extract()
item["desc"] = post.select("details[@class='aj mb10px']/text()").extract()
item["read_more"] = post.select("div[@class='uu mb2px']/a/@href").extract()enter code here
items.append(item)
for item in items:
yield item
这是项目管道
class myExporter(object):
def __init__(self):
self.myCSV = csv.writer(open('output6.csv', 'wb'))
self.myCSV.writerow([item['job_role'], item['company'], item['location'], item['desc'], item['read_more']])
def process_item(self, item, spider):
self.myCSV.writerow([item['job_role'], item['company'], item['location'], item['desc'], item['read_more']])
return item
当他们在不同的班级时,运行良好。我在 csv 文件中得到结果。由于我的项目要求,我需要蜘蛛定义中的 csv 导出器类。这些类如何组合?
【问题讨论】:
-
您可以在 Python 中嵌套类定义。
-
您能否详细说明在这种情况下我如何使用嵌套类结构????
-
我的意思是你可以将
myExporter类定义放在newJobSpider类的定义中。 -
那么如何在“myExporter”类中访问“newJobSpider”类的项目?仅仅通过创建一个超类的对象并访问它的变量是行不通的。我的意思是“newJobSpider.items”在“myExporter”类下没有产生任何结果。
-
我认为与其查看嵌套类,不如解释一下为什么需要嵌套类。这违背了 Scrapy 的项目布局,因为不支持从嵌套类加载管道。
标签: python web-scraping scrapy export-to-csv scrapy-spider